PHP DateTime::modify 월별 이상 현상 이해
PHP DateTime::modify 함수는 월을 더하거나 빼는 데 사용됩니다. 예상치 못한 결과를 초래할 수 있습니다. 그 이유는 PHP의 날짜 조작 메커니즘의 고유한 동작에서 비롯됩니다.
버그가 아닌 이유
내부적으로 월을 더하거나 뺄 때 PHP는 증가하거나 감소합니다. 월 번호(예: 1개월은 월 번호를 1씩 증가시킵니다.) 그러나 결과 달의 실제 일수는 확인하지 않습니다. 결과적으로 결과 달의 일수가 원래 날짜보다 적으면 PHP는 다음 달 1일부터 남은 일수를 계산하여 날짜를 자동으로 수정합니다.
질문에 제공된 예를 고려하세요.
$date = new DateTime('2000-12-31'); $date->modify('+1 month'); echo $date->format('Y-m-d') . "\n"; // Output: 2001-01-31 $date->modify('+1 month'); echo $date->format('Y-m-d') . "\n"; // Output: 2001-03-03
이 예에서 처음에 1개월을 추가하면 날짜가 2001-02-31이 됩니다. 그러나 2001년 2월은 28일만 있으므로 PHP는 날짜를 31일인 3월 3일로 자동 수정합니다.
원하는 행동을 위한 솔루션
날짜를 1개월 앞당겨 다음 달 1일로 앞당기는 예상 동작은 다음과 같습니다. 전략:
위 내용은 월을 더하거나 뺄 때 PHP DateTime::modify가 예기치 않은 결과를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!