2000 年问题:修订间差异
跳转到导航
跳转到搜索
→问题表现
正义羊-JRJSheep(讨论 | 贡献) (→问题由来) |
正义羊-JRJSheep(讨论 | 贡献) (→问题表现) |
||
| 第 14 行: | 第 14 行: | ||
六位数日期表示法虽然的确在节省存储空间上发挥了作用,但是这种模糊的表示方法也为未来埋下了隐患。人们在日常生活中为了方便有时也会只用两位数简称年份,但是计算机和人类的区别在于,人类拥有理解并补全前两位年份数字的能力,但是计算机没有这种能力。它们只会读取实际写出来的后两位年份,不会,也无法自行变更没有实际写出来的前两位年份数字。在六位数日期下,2000 年 1 月 1 日表示为 {{code|01/01/00}},然而由于前两位没有实际写出来,自然也就无法自动变更。计算机始终会在这种情况下默认年份前两位为 19,这样会导致计算机将 2000 年错误认为是 1900 年,认为这个时候要早于 1999 年。这会引发计算机在涉及这部分的任务执行时出错,甚至崩溃。如果不对此问题进行修复,类似的故障将会在 2000 年到来时全球爆发,所有依赖这些老旧的计算机运作的基础设施、军政机关都会受到影响,导致轻则停电停水,重则医疗瘫痪,甚至导弹误射等一系列灾难性后果。 | 六位数日期表示法虽然的确在节省存储空间上发挥了作用,但是这种模糊的表示方法也为未来埋下了隐患。人们在日常生活中为了方便有时也会只用两位数简称年份,但是计算机和人类的区别在于,人类拥有理解并补全前两位年份数字的能力,但是计算机没有这种能力。它们只会读取实际写出来的后两位年份,不会,也无法自行变更没有实际写出来的前两位年份数字。在六位数日期下,2000 年 1 月 1 日表示为 {{code|01/01/00}},然而由于前两位没有实际写出来,自然也就无法自动变更。计算机始终会在这种情况下默认年份前两位为 19,这样会导致计算机将 2000 年错误认为是 1900 年,认为这个时候要早于 1999 年。这会引发计算机在涉及这部分的任务执行时出错,甚至崩溃。如果不对此问题进行修复,类似的故障将会在 2000 年到来时全球爆发,所有依赖这些老旧的计算机运作的基础设施、军政机关都会受到影响,导致轻则停电停水,重则医疗瘫痪,甚至导弹误射等一系列灾难性后果。 | ||
== 问题表现 == | === 问题表现 === | ||
2000年问题是由于程序设计缺陷产生的问题。最为显著的表现是,如前所述,在六位数日期下,2000年1月1日将会被自动转换为01/01/00。然而,由于前两位年份并没有被实际写出来,自然也就无法进行变更,计算机就会继续将年份的前两位默认为19。如此一来,计算机就会错误的将2000年误认为是1900年,认为被缩写为00的2000年要早于被缩写为99的1999年。 | 2000年问题是由于程序设计缺陷产生的问题。最为显著的表现是,如前所述,在六位数日期下,2000年1月1日将会被自动转换为01/01/00。然而,由于前两位年份并没有被实际写出来,自然也就无法进行变更,计算机就会继续将年份的前两位默认为19。如此一来,计算机就会错误的将2000年误认为是1900年,认为被缩写为00的2000年要早于被缩写为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年问题并不仅限于2000年1月1日这个日期会造成影响,而且会导致计算机误判2000年及以后的年份,问题的根源实际上是计算机无法自动变更前两位的年份数字,由于无法自动变更,自然也会导致错误判定1900年以前的年份。某些使用数字99或9999作为文档的终止标记或停止代码,且仍然使用两位数表示年份的计算机可能会在1999年9月9日出现故障。此外,某些计算机使用了不正确的闰年识别方法,导致其无法将2000年正确识别为闰年,从而导致这些计算机在2000年2月29日、3月1日、12月31日,以及2001年1月1日出现故障。这样的问题也属于2000年问题的范畴。 | ||