【发布时间】:2014-07-04 19:21:30
【问题描述】:
好吧,伙计们,这让我发疯了,因为它应该如此简单。 unix epoch,静态时间点,应该是通用的,假设您配置为相同的时区(即使那样,它们应该是相对相同的),但是我得到的时间戳却大相径庭。
所以这就是正在发生的事情。我的本地机器上有一个 PHP 脚本,它在野外的另一个盒子上命中了一个 API。不幸的是,我只能有限地访问 API 端点,因为它是一个 wordpress 服务器。幸运的是,我至少可以在一定程度上修改代码。
本地机器:PHP 5.5.9
外部机器:PHP 5.2.14
在两者中,我都设置了相同的时区:
date_default_timezone_set('America/Los_Angeles');
当我发出请求时,虽然生成了以下时间戳(由 PHP 中的 time() 函数创建)
本地机:1404500112(2014年7月4日星期五07:55)
外机:1404485713(2014年7月4日星期五11:55)
这个,同时也使用 unixtimestamp.com,它给了 1404500116
所以,外部机器完全是蹩脚的。但怎么会这样呢? unix epoch 不是静态的吗??
任何线索将不胜感激!
谢谢
【问题讨论】:
-
是的,但是“蹩脚”服务器上的系统时钟设置为多少? PHP 可能不知道底层系统时钟位于某个不同的时区。例如,如果系统时钟设置为 UTC-2,而 PHP 假定它设置为 UTC+0,那么洛杉矶的 UTC-6 将计算出您的 4 小时差异。
-
这与时代无关,所以我编辑了你的问题。纪元是 1970 年的开始日期。
-
啊,伙计,如果是这样的话,时间实际上表明该盒子的系统时钟已关闭:\ gah,后面的主要痛苦。所以我想解决这个问题的唯一方法是说服他们设置标准 UTC+0 或即时补偿。谢谢大家的帮助,把事情搞定了。
-
@Tronhammer 与其说是时钟不如说是时区——我注意到秒数是相同的。我强烈建议你不要补偿!你会让自己发疯。投诉,直到他们解决为止。