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

时间:2018-03-08 07:13:45

标签: php apache datetime

我的环境:Apache 2.4.27php 5.6.3164-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核心的一部分。所以请不要建议更改代码!

1 个答案:

答案 0 :(得分:5)

这是反向的year 2038 problem

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

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

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