strtotime 和 mktime 都输出了不正确的时间戳,这让我发疯。
如果我添加以下 strtotime('2012-10-09');
我得到 1349701200
实际上是星期一,2012 年 10 月 8 日 13:00:00 GMT
我正在使用我的本地主机,运行 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 时间戳计算自 1970-01-01 00:00:00 UTC以来的秒数。例如,纽约的午夜 (00:00) 可能是 UTC 在一年中的这个时候的 20:00(相同的 POSIX 时间戳)。但是 UTC 的 00:00 和纽约的 00:00 对应于不同的时间点(不同的 POSIX 时间戳)。本地时钟通常(粗略地说)跟随太阳,即使您所在的地方是夜晚;太阳照耀着地球的某个地方。