我正在尝试使用以下 perl 命令将纪元时间转换为可读的本地时间:
bash-3.2$ perl -le print\ scalar\ localtime\ 32503651200
Thu Mar 9 19:13:52 1911
可以正确转换低于 2038 年的年份,但是对于大于 2038 年的年份数字,我无法得到预期的结果。
请告知如何修复。谢谢。
32 位系统上的2038 年错误在 Perl 5.12.0 中得到解决(64 位系统不受 2038 年错误的影响)。我知道是因为我做到了(在帮助下)。:) 只需升级您的 Perl,问题(以及许多其他问题)就解决了。
或者,使用日期库,例如DateTime。它不依赖系统时间函数(2038 漏洞的根源),不受 y2038 漏洞的影响,并且通常更容易使用。
如果您无法升级 Perl 并且必须使用localtime
and gmtime
,您可以使用Time::y2038来获取不受 2038 错误影响的这些功能的版本。