P粉7093078652023-08-07 13:27:57
이것은 복제본을 생성하지 않고 개체를 직접 수정하기 위해 DateTime 메서드를 완전히 사용하는 또 다른 깔끔한 솔루션입니다.
으아악출력은 다음과 같습니다:
으아악P粉0304790542023-08-07 09:48:12
현재 동작은 정확합니다. 내부적으로 일어나는 일은 다음과 같습니다.
+1 월은 월(원래 1)을 1씩 증가시킵니다. 그러면 날짜가 2010-02-31로 변경됩니다.
2010년 2월은 28일밖에 없었기 때문에 PHP는 자동으로 이 문제를 수정하고 2월 1일부터 계속해서 일수를 계산합니다. 그래서 우리가 얻은 최종 날짜는 3월 3일이었습니다.
원하는 결과를 얻는 방법:
원하는 결과를 얻으려면 다음 달을 수동으로 확인한 후 다음 달의 일수를 추가하면 됩니다.
이 코드를 직접 작성할 수 있기를 바랍니다. 나는 단지 구체적인 단계를 제공할 뿐입니다.
PHP 5.3 접근 방식:
올바른 동작을 얻으려면 PHP 5.3에 도입된 상대 시간 문 "첫 번째 날"을 사용할 수 있습니다. 이 명령문은 "다음 달", "5번째 달" 또는 "+8개월"과 함께 사용하여 지정된 달의 1일로 이동할 수 있습니다. 현재 사용하는 "+1 월" 대신 다음 코드를 사용하여 다음 달의 첫날을 가져올 수 있습니다.
이 스크립트는 2월을 올바르게 출력합니다. PHP가 다음 달의 첫 번째 날 명령문을 처리하면 다음과 같은 일이 발생합니다.
다음 달은 월(원래 1)을 1씩 증가시킵니다. 그러면 날짜가 2010-02-31로 변경됩니다.
첫번째 날은 날짜의 일수를 1로 설정하여 날짜가 2010-02-01이 됩니다.