PHP 2038 年不是错误?

PHP Year 2038 Not a Bug?

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

例如,注意下面的代码:

    <?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年的问题?为什么能输出正确的值?时间戳不可能有这么大的价值吧?

这只是 PHP 的 32 位版本的问题,您可能 运行 64 位版本能够解决更多的毫秒数,因此表示时间戳未来比 2038 年更有价值。