코드를 작성할 때 날짜 연산이 자주 사용됩니다. 대부분의 경우 편의상 단순히 타임스탬프를 더하고 빼는 것이 가능합니다:
$time = mktime(0, 0, 0, 8, 28, 2015); $one_hour_later = date('Y-m-d H:i:s', $time + 3600);
이것은 타임스탬프 1시간 후의 코드를 얻는 간단한 방법이지만 확대하면 일 이상의 단위에 이 타임스탬프가 실제로 원하는 것입니까?
예를 들어 특정 날짜의 0시의 타임스탬프가 있고 5일 후의 0시의 타임스탬프를 알고 싶다면 5*86400 뒤에 시간을 추가하면 됩니다.
$time = mktime(0, 0, 0, 3, 8, 2015); $five_day_later = date('Y-m-d H:i:s', $time + 5 * 86400); echo $five_day_later;
>> 2015-03-13 00:00:00
문제 없을 것 같습니다. 하지만 다른 곳에서 이를 실행하는 사람들은 어떻습니까?
// 时区设置为美国芝加哥 date_default_timezone_set('America/Chicago'); $time = mktime(0, 0, 0, 3, 8, 2015); $five_day_later = date('Y-m-d H:i:s', $time + 5 * 86400); echo $five_day_later;
>> 2015-03-13 01:00:00
왜 5일 후 0시가 아니죠?
물론 이 핵심 문제는 일광 절약 시간에 있습니다(일광 절약 시간의 구체적인 원칙은 소개되지 않으며 Baidu에서 직접 확인할 수 있습니다).
해결책: 덧셈과 뺄셈 대신 strtotime 함수를 사용하세요
// 时区设置为美国芝加哥 date_default_timezone_set('America/Chicago'); $time = mktime(0, 0, 0, 3, 8, 2015); $five_day_later = date('Y-m-d H:i:s', strtotime('+5 days', $time)); echo $five_day_later;
이 문제는 해당되지 않습니다. 일광 절약 시간은 시간대에 존재하지 않지만 일광 절약 시간이 존재하는 시간대의 경우 예상 결과에 영향을 미칩니다.
저작권 안내: 이 글은 해당 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.
위에서는 1일이 어떻게 86400초와 같은지 소개합니다. , 관련 내용을 포함하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.