【发布时间】:2013-08-24 07:09:42
【问题描述】:
我正在开发一个应用程序,该应用程序向第 3 方产品许可服务器发送请求,等待响应,然后在几秒钟后向我的服务器发送请求。后来,我根据它们的创建日期和时间比较了这两条记录。当我查看时间时,它们似乎相隔大约 6 小时(可能是由于时区差异)。但是,当我通过 PHP 的 strtotime() 函数运行每个函数时,结果仅相差几秒钟。这是一个例子:
echo strtotime("2013-04-29T14:55:47.707Z");
echo '<br>';
echo strtotime("2013-04-29 08:56:10");
显示为:
1367247347
1367247370
这只是相差 23 秒,而不是 6 小时。
如果我没有提供有关每个日期字符串的时区的任何信息,它们怎么会如此接近?
(请记住,我希望这些结果是正确的;我只是不确定我是如何得到它们的)
【问题讨论】:
-
来自
strtotime()的数字是Unix timestamps。第一个时间字符串位于UTC时区(用Z表示“Zulu”)。第二个时间字符串没有指定时区,因此使用当前为您的 PHP 配置的,与 UTC 有 -6 小时的偏移量。 -
我能想到的唯一一件事是
.707Z必须转换为某种类型的时区信息。 -
您的默认时区设置为 UTC,因此它们在同一时区内进行计算。如果您想要不同的行为,请参阅here