在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作。32位操作系统的最后时间是2038年1月19日03:14:07,星期二。而这一秒过后,Time_360问答t的值将变成-2147483647,代表的是1901年12月13日8:45:52pm,这样32位软硬件系统的日期时间显示就都乱套。
203升岁兴错结眼系8问题:
Time_t是C/C++等编程语言在内部代表/存储日期和时间的一种数据类型。Time_t实际上是一个代表秒数的整数。当初设计的时候,这个4字节的时间格式把19收打需械脱切境然广东院70年1月1日凌晨0时0分0秒作为时间起点,这时的时间值为0。以后所有的时间都是从这个时间开始一秒一秒累积得来的。
比方说如果时间已经累积到了919642718这个数值,就是说这时距离1降重犯支村负表负970年1月1日凌晨0时0分0已经过去了919642718秒,换算一下就应该是1999年2月21日星期天16时18分38秒。
这样计算时间的好处在于,把任意两个时间值相减之后,就可以很迅速地得到这两个时间之间相差的秒数,然后入色工剧突场磁源你可以利用别的程序把它换算成明白易懂的年月日时分秒的形式。
要是曾经读过一点儿关于计算机方面的书,就会知道一个4字节也就概二介教企是32位的存储空间的最大值是2147483647。请注意!兵汉纪河2038年问题的关键也就在这里——当时间一秒至感句青刑条工很侵一秒地跳完2147483647那惊心动甚叫魄的最后一秒后,会防感季显校担发生什么?
答案是,它就会转为负数也就是说时间无效。那一刻的准确的时间为2038年1月19日03:群用杆真延湖行14:07am(GMT)星期二,之后所有用到这种“标准时间库”的会期C/C++语言程序都会碰到时间计算上的麻烦。超过此一瞬间,时间将会被掩盖(船备步亚三训七wraparound)并且在内部被表示为一个负数,并造成程序无法工作,因为它们无法将此时间识别为2038年,而可能会依个别实例而跳回1970年或1901年,错误的计算及动作可能因此产生。比如手机网络工作不正常,卫星脱离轨道,型号较老的电脑软件软硬件无法正常工作等。
这就是2038年温航练父问题。
标签: