strtotime和mktime都输出了不正确的时间戳,它使我发疯。
如果我添加以下strtotime('2012-10-09');
我得到1349701200
实际上是星期一,2012年10月8日13:00:00 GMT
我正在使用我的Localhost,正在运行MAMP。我假设这是服务器时区问题,但我不明白为什么或如何修复它。
有帮助吗?
strtotime使用默认时区来解释字符串。如果您想要不同的时区,则可以明确指定或更改所有调用:
<?php
if (date_default_timezone_get()) {
echo 'date_default_timezone: ' . date_default_timezone_get()."n";
}
echo strtotime('2012-10-09')."n"; # default timezone
echo strtotime('2012-10-09 UTC')."n";
date_default_timezone_set('UTC');
echo strtotime('2012-10-09')."n";
?>
输出
date_default_timezone: Europe/London
1349737200
1349740800
1349740800
POSIX TIMESTAMP计数自1970-01-01 00:00:00以来的秒数 UTC 。例如,纽约的午夜(00:00)在一年中的这个时候可能是UTC的20:00(同一POSIX TIMESTAMP)。但是00:00在UTC和纽约的00:00对应于不同的时刻(不同的时间戳)。当地时钟通常跟随太阳(大致说话),即使是您在这里的夜晚;太阳在地球上的某个地方闪耀。