PHP DateTime으로 월 수정: 의도된 동작 발견
PHP의 DateTime 클래스로 작업할 때 월을 더하거나 빼면 항상 결과가 나오지 않을 수 있습니다. 예상된 결과. 문서에서 경고하고 있듯이 이러한 작업은 보기만큼 직관적이지 않으므로 "주의"하십시오.
의도된 동작 설명
다음에 제공된 예를 고려하십시오. 문서:
$date = new DateTime('2000-12-31'); $date->modify('+1 month'); // Move ahead by 1 month echo $date->format('Y-m-d') . "\n"; // Prints 2001-01-31 $date->modify('+1 month'); // Advance another month echo $date->format('Y-m-d') . "\n"; // Prints 2001-03-03
예상대로 월을 늘리는 대신 결과는 다음과 같습니다. 3월 3일로 이동합니다. 이유는 무엇입니까?
내부적으로 발생하는 상황은 다음과 같습니다.
기대치 달성 동작
"1개월"이 날짜를 한 달 앞당기는 예상 동작을 달성하려면 다음과 같은 몇 가지 옵션이 있습니다.
$d = new DateTime('2010-01-31'); $d->modify('first day of next month'); echo $d->format('F'), "\n"; // Correctly prints February
결론
예기치 않은 결과를 방지하려면 DateTime의 월 수정 작업의 의도된 동작을 이해하는 것이 중요합니다. 수동 계산 또는 "다음 달 1일" 기능을 사용하면 PHP 애플리케이션에서 원하는 날짜 조작 기능을 얻을 수 있습니다.
위 내용은 PHP의 DateTime::modify(' 1 Month')가 예상치 못한 결과를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!