PHP 2038年不是一个Bug


PHP Year 2038 Not a Bug?

我是PHP新手,从我正在阅读的书中,我意识到有一个2038年的问题,它指出,当我使用时间戳时,我能达到的最远日期将是2038年1月19日。为了克服这个限制,我建议使用dateTime对象。然而,当我在PHP中测试它时(使用PHP 5.6.6的MAMP),似乎即使我在更大的日期上使用时间戳,它也能完美地工作。

例如,注意下面的代码:
    <?php
        $date1_timestamp = mktime(13, 30, 0, 1, 12, 2049);
        $date1 = date('Y-m-d H:i:s', $date1_timestamp);
        echo $date1; // output: 2049-01-12 13:30:00
    ?>

我想问为什么我的PHP服务器没有遭受2038年的问题?为什么它能输出正确的值?时间戳不能保存这么大的值,对吧?

这只是32位PHP版本的问题,您可能运行的是64位版本,它能够寻址更大的毫秒数,因此表示的时间戳值比2038年更远。