2000 年问题:修订间差异

跳转到导航 跳转到搜索
添加56字节 、​ 2025 年 11 月 2 日 (星期日)
第 15 行: 第 15 行:


=== 问题表现 ===
=== 问题表现 ===
2000 年问题是由于程序设计缺陷产生的问题。最为显著的表现是,如前所述,在六位数日期下,2000 年 1 月 1 日将会被自动转换为 {{code|01/01/00}}。然而,由于前两位年份并没有被实际写出来,自然也就无法进行变更,计算机就会继续将年份的前两位默认为 19。如此一来,计算机就会错误的将 2000 年误认为是 1900 年,认为被缩写为 00 的 2000 年要早于被缩写为 99 的 1999 年。
2000 年问题是由于程序设计缺陷产生的问题。最为显著的表现是,如前所述,在六位数日期下,2000 年 1 月 1 日将会被自动转换为 {{code|01/01/00}}。然而,由于前两位年份并没有被实际写出来,自然也就无法进行变更,计算机就会继续将年份的前两位默认为 {{code|19}}。如此一来,计算机就会错误的将 2000 年误认为是 1900 年,认为被缩写为 {{code|00}} 的 2000 年要早于被缩写为 {{code|99}} 的 1999 年。
2000 年问题并不仅限于 2000 年 1 月 1 日这个日期会造成影响,而且会导致计算机误判 2000 年及以后的年份,问题的根源实际上是计算机无法自动变更前两位的年份数字,由于无法自动变更,自然也会导致错误判定 1900 年以前的年份。某些使用数字 99 或 9999 作为文档的终止标记或停止代码,且仍然使用两位数表示年份的计算机可能会在 1999 年 9 月 9 日出现故障。此外,某些计算机使用了不正确的闰年识别方法,导致其无法将 2000 年正确识别为闰年,从而导致这些计算机在 2000 年 2 月 29 日、3 月 1 日、12 月 31 日,以及 2001 年 1 月 1 日出现故障。这样的问题也属于 2000 年问题的范畴。
 
除了上述的原因之外,导致 2000 年问题的原因也包括在程序编写时将 19 硬编码到软件子程序中、采用了可能致使存储寄存器溢出的日期数据类型。
2000 年问题并不仅限于 2000 年 1 月 1 日这个日期会造成影响,而且会导致计算机误判 2000 年及以后的年份,问题的根源实际上是计算机无法自动变更前两位的年份数字,由于无法自动变更,自然也会导致错误判定 1900 年以前的年份。某些使用数字 {{code|99}} {{code|9999}} 作为文档的终止标记或停止代码,且仍然使用两位数表示年份的计算机可能会在 1999 年 9 月 9 日出现故障。此外,某些计算机使用了不正确的闰年识别方法,导致其无法将 2000 年正确识别为闰年,从而导致这些计算机在 2000 年 2 月 29 日、3 月 1 日、12 月 31 日,以及 2001 年 1 月 1 日出现故障。这样的问题也属于 2000 年问题的范畴。
 
除了上述的原因之外,导致 2000 年问题的原因也包括在程序编写时将 {{code|19}} 硬编码到软件子程序中、采用了可能致使存储寄存器溢出的日期数据类型。


=== 问题举例 ===
=== 问题举例 ===

导航菜单