【问题标题】:Why getdate(1500000000) returns July 7 2017 while getdate(2500000000) returns February 13 1913为什么 getdate(1500000000) 返回 2017 年 7 月 7 日,而 getdate(2500000000) 返回 1913 年 2 月 13 日
【发布时间】:2017-04-20 23:14:19
【问题描述】:

问题很简单,这是一个错误还是我在这里遗漏了一些东西,事实是 getdate 的较大值会返回较早的日期。有什么问题??

【问题讨论】:

标签: php date datetime getdate


【解决方案1】:

2500000000 = 0x9502F900 = 1001 0101 0000 0010 1111 1001 0000 0000

即在 32 位系统上,符号位已设置,因此您实际上得到了一个负数。由于宇宙始于 1970 年(根据 unix),1913 年的日期是负时间戳的明显症状。

【讨论】:

    【解决方案2】:

    2,500,000,000 超过了 32 位整数的最大值。

    我没有提前知道答案。这些是我用来解决这个问题的资源: http://php.net/manual/en/language.types.integer.php
    INT max size for 32bit system

    【讨论】:

    • 是的!我在阅读John3136 的答案后了解到这一点,然后编辑了我的答案以消除不准确之处。不过你很快;)
    • 好的,那我应该怎么处理,我的项目最终会崩溃吗??
    • @Marange - 要么切换到 64 位 PHP,要么使用 DateTime 对象而不是 unix 时间戳
    猜你喜欢
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    相关资源
    最近更新 更多