我的环境: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();
$time
的值为false
。在我测试时,getTimestamp
仅适用于范围14 Dec 1901 - 19 Jan 2038
。
P / s:示例代码是Moodle核心的一部分。所以请不要建议更改代码!
答案 0 :(得分:5)
这是反向的year 2038 problem。
64位可以容纳的值有限制,您已找到它。
PHP使用Linux时间戳,它计算在1970年1月1日午夜之后(以及在您的情况下,之前)午夜。
如果您采用64位可以容纳的最大负值(以秒为单位),并从1970年1月1日(也称为Epoch)中减去该值,您将获得找到的限制