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时间戳吗?
//编辑:
我意识到甚至用"现在"指定时区也是没有意义的。但是,它与其他相关时间相同,例如"明天午夜"。在那里,根据时区的不同,"明天"可能会更远一天,这取决于时区是否已经过了午夜。这种行为同样奇怪,只是有点难以解释。
正如Unix时间wiki所解释的,Unix Epoch总是在UTC中。这就是为什么输出
echo strtotime("now UTC");
echo time();
都是一样的。根据这个信息纽约时区是UTC -5 hours
。当前夏令时 +1 现在同样UTC -4 hours
.这就是为什么你得到结果2013-08-14 05:43:55
(4小时差异(。
您正在使用 strtotime("now America/New_York")
这就是为什么它为字符串显示不同时区的 unix 时间戳。
使用这个:
date_default_timezone_set("America/New_York");