2038年,互联网将遭遇“千年虫”式问题

Share

      据国外媒体报道,日前有业内人士指出,国际互联网将于30年后遭遇“千年虫”式问题,并可能导致网络崩溃。该问题被称为  “2038 Bug”,与2000年的“千年虫”问题类似。到2038年,Unix系统时间所使用的32位整数将溢出。届时,时间可能以负数形式出现。当然,更为关键的是,所有程序都将出现问题。因为程序所能够识别的时间将变为1901年,而不是2038年。尽管“千年虫”问题并未给全球带来太大的灾难,但“2038 Bug”问题仍不容忽视。因为2006年的AOL Web服务器崩溃就是最好的证明。          
      
      什么是Y2038 bug

      Time_t 是C/C++ 等编程语言在内部代表/存储日期和时间的一种数据类型。Time_t实际上是一个代表秒数的整数,当它的值为0时,代表的时间是1970年1月1日12: 00:00;当Time_t=60时,则表示1970年1月1日12:01:00,依此类推。 所有32位电脑系统都用带符号32位整型来存储time_t的值,也就是说t_time只能用31位二进制数来表示(第一位用来表示正负号),而其最大值转换为十进制是2147483647,换算成日期和时间刚好是2038年1月19日03:14:07am(GMT),而这一秒过后,t_time的值将变成-2147483647,代表的是 1901年12月13日8:45:52pm,这样32位软硬件系统的日期时间显示就都乱套了。另外,无法接受time_t为负值的其他功能也将返回错误。举个实际的例子来说,登陆上Yahoo messenger,给好友发个消息,恩没问题,现在把系统时间更改为2038年1月19日03:14:07am,此时如果再发消息Yahoo messenger就将崩溃。