我正在尝试使用以下 perl 命令将纪元时间转换为可读的本地时间:
bash-3.2$ perl -le print\ scalar\ localtime\ 32503651200
Thu Mar 9 19:13:52 1911
低于 2038 年是可以正确转换的,但是对于大于 2038 年的年份,我无法得到预期的结果。
请指教如何修复。谢谢。
最佳答案
32 位系统上的 year 2038 bug 是 worked around in Perl 5.12.0(64 位系统不受 2038 错误影响)。我知道是因为 I did it (有帮助)。 :) 只需升级您的 Perl,问题(以及许多其他问题)就解决了。
或者,使用日期库,例如 DateTime 。它不依赖于系统时间函数(2038 错误的根源),不受 y2038 错误的影响,并且通常更容易使用。
如果您无法升级 Perl 并且必须使用 localtime
和 gmtime
,您可以使用 Time::y2038 来获取那些不受 2038 错误影响的函数的版本。
关于perl - 为什么 perl 不能在 2038 年转换 unix 时间戳?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39652264/