Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么perl不能转换2038年的unix时间戳?_Perl_Year2038 - Fatal编程技术网

为什么perl不能转换2038年的unix时间戳?

为什么perl不能转换2038年的unix时间戳?,perl,year2038,Perl,Year2038,我尝试使用以下perl命令将历元时间转换为可读的本地时间: bash-3.2$ perl -le print\ scalar\ localtime\ 32503651200 Thu Mar 9 19:13:52 1911 2038年以下的年份可以正确转换,但对于大于2038年的年份,我无法获得预期结果 请告知如何修复。谢谢。 2038年问题是一个计算和数据存储问题,在这种情况下,时间值存储或计算为有符号32位整数,该数字被解释为自1970年1月1日UTC 00:0

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

       bash-3.2$ perl -le print\ scalar\ localtime\ 32503651200
       Thu Mar  9 19:13:52 1911
2038年以下的年份可以正确转换,但对于大于2038年的年份,我无法获得预期结果

请告知如何修复。谢谢。

2038年问题是一个计算和数据存储问题,在这种情况下,时间值存储或计算为有符号32位整数,该数字被解释为自1970年1月1日UTC 00:00:00(“历元”)起的秒数。此类实施无法对2038年1月19日03:14:07 UTC之后的时间进行编码,这一问题类似于但并非完全类似于“Y2K问题”(也称为“千年虫”),在该问题中,表示自1900年以来的年数的两位数值无法对2000年或更晚的年份进行编码。大多数32位类Unix系统以这种“Unix时间”格式存储和操作时间

32位系统上的错误为(64位系统不受2038错误的影响)。我知道是因为(在帮助下):)只要升级Perl,问题(以及许多其他问题)就解决了

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


如果您无法升级Perl,并且必须使用
localtime
gmtime
,那么您可以使用来获得那些函数的版本,使其不受2038错误的影响。

您的Perl是否超过6年(超过5.12年)?这解释了问题,但不是如何解决问题。Schwern,谢谢您的帮助。我将提取必要信息并将其转换为Excel。谢谢你的解释。@Fehan Excel与此有什么关系?