我正在尝试使用以下 perl 命令将纪元时间转换为可读的本地时间:

       bash-3.2$ perl -le print\ scalar\ localtime\ 32503651200
       Thu Mar  9 19:13:52 1911

低于 2038 年是可以正确转换的,但是对于大于 2038 年的年份,我无法得到预期的结果。

请指教如何修复。谢谢。

最佳答案

32 位系统上的 year 2038 bugworked around in Perl 5.12.0(64 位系统不受 2038 错误影响)。我知道是因为 I did it (有帮助)。 :) 只需升级您的 Perl,问题(以及许多其他问题)就解决了。

或者,使用日期库,例如 DateTime 。它不依赖于系统时间函数(2038 错误的根源),不受 y2038 错误的影响,并且通常更容易使用。

如果您无法升级 Perl 并且必须使用 localtimegmtime ,您可以使用 Time::y2038 来获取那些不受 2038 错误影响的函数的版本。

关于perl - 为什么 perl 不能在 2038 年转换 unix 时间戳?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39652264/

10-11 20:29