3
php > echo strtotime("now America/New_York")."\n";
1376459035 // -> 2013-08-14 05:43:55 - Wrong

php > echo strtotime("now UTC")."\n";
1376444635 // -> 2013-08-14 01:43:55 - OK

php > echo time()."\n";
1376444635 // -> 2013-08-14 01:43:55 - OK

谁能解释一下?

这是一些 PHP 的发明——时区“更正”的 unix 时间戳吗?

// 编辑:

我意识到用“现在”指定时区是没有意义的。但是,它确实与其他相对时间有关,例如“明天午夜”。在那里,根据时区,“明天”可能会更远一天,具体取决于时区是否已经超过午夜。这种行为同样奇怪,只是有点难以解释。

4

2 回答 2

0

正如Unix time wiki上解释的那样,Unix Epoch 始终采用 UTC。这就是为什么输出

echo strtotime("now UTC");
echo time();

是相同的。根据这个信息纽约时区是UTC -5 hours。使用当前的夏令时 +1 现在它同样UTC -4 hours。这就是你得到结果的原因2013-08-14 05:43:55(4 小时差异)。

于 2013-08-14T06:34:37.000 回答
0

您正在使用 strtotime("now America/New_York")这就是为什么它在不同时区显示字符串的 unix 时间戳。

用这个:

date_default_timezone_set("America/New_York");
于 2018-08-28T05:03:35.573 回答