PHP显示错误的日期为31-12-9999


php displays wrong date in php for 31-12-9999

当我尝试在PHP中执行以下语句

echo gmdate("M d Y H:i:s", gmmktime(0, 0, 0,12, 31, 9999));

PHP返回以下日期

Result Jan 01 1970 00:00:00

我也尝试使用以下strtotime函数,但结果是相同的

echo gmdate("M d Y H:i:s", strtotime('2999-12-31'));

Result: Jan 01 1970 00:00:00

你知道这里有什么问题吗?

9999年和2999年超出了UNIX时间戳(strtotime()gmmktime()返回的格式)的范围。最大有效值为INT_MAX, 0x7fffffff(2038年1月18日前后)

gmdate函数可以使用的最大日期是2038年1月19日;尝试使用超出该日期的日期无法计算(字面上),因此PHP返回您在结果中看到的Unix基本日期。

见http://us2.php.net/manual/en/function.gmdate.php .