1

在尝试使 2038 年的 unix_timestamps 更大时,我遇到了 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) );'给出 int(4078677600)

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

4

1 回答 1

0

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

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

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

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

于 2014-08-12T15:49:19.430 回答