我今天可以在我的代码中做些什么,以防止unix时间戳在2038年耗尽


What can I do in my code today, to prevent the unix time stamp running out in 2038?

例如,我主要用PHP编程。我今天能做些什么来防止我的程序在2038年由于unix时间戳耗尽而爆炸?我希望看到一些特定的算法、函数或逻辑可以防止这个问题。谢谢。

将时间戳存储为64位或更高的整数。我确信MySQL会在那时更新,所以TIMESTAMP不是32位的。至于PHP,如果你在64位服务器上,我不认为有任何问题。

除非你打算在接下来的25年里使用32位服务器或PHP二进制文件,否则我认为这不会是一个问题。

PHP是一种解释性语言,所以当你写$stamp = 1358425440;时,它只是PHP读入的一串文本,然后根据PHP的编译方式分配X字节的内存来存储它。因此,如果您将PHP二进制文件更新为支持64位整数的二进制文件,则无需更改代码。至少在理论上是这样。我们都知道PHP是如何喜欢改变常用函数和弃用一些东西的。

我所能看到的唯一考虑是在PHP之外存储整数值,即。在mySQL。在这种情况下,您只需要确保将时间戳存储为UNSIGNED INT、BIGINT或DATETIME。

SIGNED int将于2038年1月19日星期二03:14:07 GMT结束,但UNSIGNED int将持续到2006年2月7日星期日06:28:15 GMT。

变化

 // 32 bit
    int timestampSec 

 // 64bit
    long timestampSec