【问题标题】:size of timestamp returned by strtotime in phpphp中strtotime返回的时间戳大小
【发布时间】:2015-08-11 13:54:46
【问题描述】:

php中strtotime()方法返回的时间戳大小是多少?我猜它可能是32位。有什么方法可以从 php 中的 strtotime('now') 获取 64 位时间戳?

【问题讨论】:

    标签: php unix-timestamp


    【解决方案1】:

    取决于您使用的 PHP 架构。 32 位 PHP = 32 位时间戳,64 位 PHP = 64 位时间戳。

    不考虑架构的建议解决方案

    正如 Mark Ba​​ker 所说,使用 DateTime 对象是更安全的选择。这避免了使用架构检测并提供了过多的功能。

    【讨论】:

    • 那么,2038 年的问题仅仅是因为架构限制?
    • 正确。 2038 年 1 月 19 日之后的任何内容都会耗尽 32 位有符号整数 (2147483647)
    • 我想我找到了解决方案。谢谢!
    • 解决方案是切换到使用始终为 64 位的 DateTime 对象,无论您使用的是 32 位还是 64 位 PHP,而不是 unix 时间戳
    • 我打算建议这个。谢谢马克!我会补充回答。
    【解决方案2】:

    我的理解是它将与您所在的系统匹配(显然,如果您使用的是 PHP 64 位二进制文​​件);因此,如果您使用的是 32 位系统,它将是 32 和 64 位相同。

    strtotime("0000-00-00 00:00:00") 在 32 位系统上返回 FALSE。

    strtotime("0000-00-00 00:00:00") 在 64 位系统上返回 -62169955200。

    对于大于 2038 年的日期,情况相同。有关更多信息,请参阅 http://www.sitepoint.com/is-your-php-application-affected-by-the-y2k38-bug/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 2013-01-29
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多