【问题标题】:PHP mktime does not return big integer values on 64-bit systemPHP mktime 在 64 位系统上不返回大整数值
【发布时间】:2014-10-05 17:53:26
【问题描述】:

我在尝试使 unix_timestamps 大于 2038 年时遇到 PHP 函数 mktime 问题。我有 64 位操作系统。

服务器上的 PHP 版本: php -v 给 PHP 5.1.6 (cli)(构建时间:2010 年 11 月 29 日 16:47:46)

php -r 'echo PHP_INT_MAX;' 给 9223372036854775807

但是

php -r 'var_dump( mktime(0, 0, 0, 4, 1, 2099) );' 给 布尔(假)

在开发服务器上 php -r 'var_dump( mktime(0, 0, 0, 4, 1, 2099) );' 给 整数(4078677600)

此 PHP 函数在 64 位系统上无法正常工作的原因可能是什么?此外,strtotime 不适用于年份大于 2038 的日期

【问题讨论】:

  • 尝试使用DateTime类。
  • DateTime 类仅在 (PHP 5 >= 5.2.0) 之后可用。在这一点上,我有 PHP 5.1.6 升级是一个选项,但这是最后一个选项。

标签: php 64-bit strtotime mktime year2038


【解决方案1】:

http://en.wikipedia.org/wiki/Year_2038_problem

你给谁打电话? “后见之明队长!”

更严肃地说,对于较大的日期范围,我会使用传统的 DB 日期时间存储方法 YYYY-MM-DD HH:MM:SS。它易于解析且高度可移植。

DateTime 用于运行时使用是最可行的,后一种字符串模式用于持久性。

【讨论】:

    猜你喜欢
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    相关资源
    最近更新 更多