strtotime对未来日期的奇怪行为

时间:2011-11-02 15:12:15

标签: php strtotime

在排除奇怪错误后,我遇到了这个问题:

echo strtotime("2050/09/19");

返回false

为什么?

谢谢!

4 个答案:

答案 0 :(得分:4)

看起来你没有64位PHP。来自strtotime文档:

  

注意:

     

时间戳的有效范围通常是从星期五,1901年12月13日20:45:54 UTC到星期二,2038年1月19日03:14:07 UTC。 (这些是与32位有符号整数的最小值和最大值相对应的日期。)此外,并非所有平台都支持负时间戳,因此您的日期范围可能不会早于Unix时期。这意味着,例如1970年1月1日之前的日期不适用于Windows,某些Linux发行版和一些其他操作系统。 PHP 5.1.0和更新的版本克服了这个限制。

     

对于64位版本的PHP,时间戳的有效范围实际上是无限的,因为64位可以代表任何方向上大约2930亿年。

答案 1 :(得分:3)

在32位系统上,它无法处理将来的日期:strtotime

答案 2 :(得分:3)

这是因为2050年不在32位Unix时代(在2038年的某个地方结束)。有关the documentation page for strtotime()的更多信息,请参阅。

答案 3 :(得分:2)

时间戳的有效范围通常为从星期五,1901年12月13日20:45:54 UTC到星期二,2038年1月19日03:14:07 UTC 。 (这些是与32位有符号整数的最小值和最大值相对应的日期。)此外,并非所有平台都支持负时间戳,因此您的日期范围可能不会早于Unix时期。这意味着,例如1970年1月1日之前的日期不适用于Windows,某些Linux发行版和一些其他操作系统。 PHP 5.1.0和更新的版本克服了这个限制。

对于64位版本的PHP,时间戳的有效范围实际上是无限的,因为64位可以代表任何方向上大约2930亿年。

Here.