PHP DateTime getTimestamp在1901年12月13日之前不能正常工作

blu*_* qn 4 php apache datetime

我的环境:Apache 2.4.27,php 5.6.31,64-bit architecture.

示例代码:

$date = new DateTime('now');
$date->setDate(1900,1,1);
$date->setTime(0, 0, 0);
$time = $date->getTimestamp();
Run Code Online (Sandbox Code Playgroud)

价值$timefalse.在我测试时,getTimestamp仅适用于该范围14 Dec 1901 - 19 Jan 2038.

我用Google搜索,但没有找到任何解决方案.如果您有任何理想,请与我分享!

P/s:示例代码是Moodle核心的一部分.所以请不要建议更改代码!

Maw*_*awg 5

这是反映2038年的问题.

64位可以容纳的值有限制,您已找到它.

PHP使用Linux时间戳,它计算在1970年1月1日午夜之后(以及在您的情况下,之前)的几秒钟.

如果您将64位可以容纳的最大负值(以秒为单位),并从1970年1月1日(也称为Epoch)中减去,那么您将获得已找到的限制