Php strotime()为string“返回不同时区的不同Unix时间戳;现在";

Php strotime()为string“返回不同时区的不同Unix时间戳;现在";,php,Php,有人能解释一下吗 这是PHP的发明吗?时区-“更正”unix时间戳 //编辑: 我意识到用“现在”来指定时区是没有意义的。但是,它与其他相关时间,例如“明天午夜”相关。在那里,根据时区,“明天”可能是更远的一天,这取决于时区是否已经超过午夜。这种行为同样奇怪,只是有点难以解释。如上所述,Unix时代始终使用UTC。这就是为什么 php > echo strtotime("now America/New_York")."\n"; 1376459035 // -> 2013-08-14

有人能解释一下吗

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

//编辑:

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

如上所述,Unix时代始终使用UTC。这就是为什么

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
都是一样的。根据纽约的时区是UTC-5小时。当前夏时制时间+1现在等于UTC-4小时。这就是您得到结果的原因
2013-08-14 05:43:55
(差异4小时)。

您正在使用
strotime(“现在的美国/纽约”)
这就是为什么它在不同时区为字符串显示unix时间戳

使用以下命令:

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

因“太宽”而关闭。。呃什么?怎么可能更具体呢?翻阅了PHP文档后,我找不到您的时间格式文档。要么我错过了(请发布一个链接),要么你发现了一个未记录的功能。这是完全正常的。@MikeW请看这里:(我猜“now”和“tz”符号在不同的部分,文档说“在大多数情况下,不同部分的格式可以在相同的日期/时间字符串中使用”,很难确定这是否受支持。至少它似乎没有返回错误。)这有点混乱,因为我认为单独使用strotime(“now”)将使用系统时区进行计算,但如果我更改默认时区,它将使用该时区,而不是系统时区。。。
date_default_timezone_set("America/New_York");