1

strtotime 和 mktime 都输出了不正确的时间戳,这让我发疯。

如果我添加以下 strtotime('2012-10-09');

我得到 1349701200

实际上是星期一,2012 年 10 月 8 日 13:00:00 GMT

我正在使用我的本地主机,运行 MAMP。我假设这是服务器时区问题或其他问题,但我不明白为什么或如何解决它。

有什么帮助吗?

4

1 回答 1

2

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 时间戳)。本地时钟通常(粗略地说)跟随太阳,即使您所在的地方是夜晚;太阳照耀着地球的某个地方。

于 2012-10-20T06:14:54.090 回答