PHP mktime在64位系统上不返回大整数值

时间:2014-08-12 15:18:03

标签: php 64-bit strtotime mktime year2038

我在使用PHP函数 mktime 时遇到问题,试图让unix_timestamps大于2038年。我有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) );'给出了 INT(4078677600)

这个PHP函数可能导致无法在64位系统上正常工作? strtotime 也不适用于年份大于2038的日期

1 个答案:

答案 0 :(得分:0)

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

你打电话给谁? "船长Hindsight!"

更严重的是,对于大日期范围,我会使用YYYY-MM-DD HH:MM:SS的传统DB日期时间存储方法。它易于解析且便于携带。

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