当前位置:Linux教程 - Linux - Linux下的Y2K问题

Linux下的Y2K问题

  这个话题以前讨论过,这里再讨论一下,免得2000年到来时,全世界都灰飞烟灭了:-).Linux(以及Unix)系统通过计算从1970年1月1日开始到当前的秒数,来获取当前日期信息。假设你看到Linux系统的日期显示是一个字符串:“Fri Dec 3 08:50:17 PST 1999”,其实这个字符串是通过将秒计数器的值送到一个函数运算产生的。所以,对于秒计数器来说,2000年1月1日与其他日期没有实质上的差别,其它将日期作为字符串来显示的各种转换程序也一样。

  因此,如果你的Linux系统在2000年1月1日崩溃,那很可能是因为其它运行非Linux系统的电子设备导致。不过,如果你是一位非常具有前瞻性的人,不妨在2038年之前,检查一下你的操作系统源码,如果秒计数器还是一个32位整数型变量,2038年之后将会导致类似Y2K问题。

  如果你对Linux和Unix使用这种非标准的格式感到不解,考虑一下,当你的程序要比较不同的日期时,对32位整数值作加减运算,远远比你要考虑诸如月份、年份的分析比较要容易得多。

  以上关于Linux的讨论,并不能保证你在某些应用程序不会产生问题,尤其是那些原来不是在Linux平台上编写的程序,如果应用程序(比如一个数据库)使用自己的日期格式,而不像Linux用一个32位整数值,那将有可能导致Y2K问题。

  加入你想做一些测试,找出那些显示2位数字年份的应用程序,这些程序最有可能发现Y2K问题。需要说明一点,有些使用2位数字年份的数据库,会自动将低于某一个数值的年份当成下一个世纪的年份。比如,年份小于80的被当成21世纪的年份,而年份大于80的则被当作20世纪。