我在使用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的日期
答案 0 :(得分:0)
http://en.wikipedia.org/wiki/Year_2038_problem
你打电话给谁? "船长Hindsight!"更严重的是,对于大日期范围,我会使用YYYY-MM-DD HH:MM:SS
的传统DB日期时间存储方法。它易于解析且便于携带。
使用DateTime
进行运行时使用是最可行的,后一种字符串模式用于持久性。