php在31-12-9999中显示错误的日期

时间:2014-03-30 03:11:40

标签: php mktime

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

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

PHP返回以下日期

结果1970年1月1日00:00:00

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

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

结果:1​​970年1月1日00:00:00

知道这里有什么不对吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

gmdate功能可以使用的最长日期是2038年1月19日;尝试使用超出该范围的日期(不会计算)(字面意思),因此PHP会返回您在结果中看到的基本Unix日期。

请参阅http://us2.php.net/manual/en/function.gmdate.php