我偶然发现了这个问题:
<?php
echo date('r', 4567743118);
所需&正确的结果(在本地主机上):
2114年9月30日星期日10:31:58+0100
错误结果(远程):
1978年8月24日星期四04:03:42+0100
在32位平台上运行脚本时会得到错误的结果。我认为这是著名的Y2038问题,但我应该如何修复它?
如果我回显时间戳(当存储在变量中时),它会显示良好,但date()
会破坏它(我假设转换为int32)。
<?php
$a = 4567743118;
echo $a;
4567743118
[如果相关,它是debian repos]的PHP 5.4.4
试试这个:
<?php
$dt = new DateTime('@4567743118');
$date = $dt->format('Y-m-d');
echo $date;
在x86机器上运行代码
32位系统上的时间戳只会持续到l2.147.483.647。因此,如果您的值更大,则会超过整数最大长度。这里的最高年份是2038年。
如果你需要更大的日期,你必须使用日期时间。