【问题标题】:Getting different UNIX time on server with PHP 5.2 vs another on PHP 5.5使用 PHP 5.2 在服务器上获得不同的 UNIX 时间与在 PHP 5.5 上获得不同的 UNIX 时间
【发布时间】: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 与其说是时钟不如说是时区——我注意到秒数是相同的。我强烈建议你不要补偿!你会让自己发疯。投诉,直到他们解决为止。

标签: php unix timestamp


【解决方案1】:

time() 函数总是返回世界时间,而不是本地时间,在 PHP 中设置时区不会有任何区别。

我怀疑机器安装不正确。机器可能认为它在一个时区,然后有人更改了时钟以使其与他的本地时间相匹配,但没有更改时区。

尝试在外部机器的命令行上运行date 命令。看看它说了什么。

同时在本地和外部机器上运行date -u

【讨论】:

    猜你喜欢
    • 2014-04-06
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 2016-05-20
    相关资源
    最近更新 更多