2000 年问题:修订间差异

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


=== 问题举例 ===
=== 问题举例 ===
医生要使用计算机来为一名在 2000 年出生的婴儿计算要为他/她使用的药物剂量,若这台计算机仍然在使用六位数日期表示法,那么在这台计算机的逻辑中会错误的将这名婴儿误认为是一位出生于 1900 年的百岁老人,并向医生给出一个适用于老年人的药物剂量,而非新生儿的药物剂量,而此时给出的药物剂量对于一个新生儿来说可能是致命性的。
医生要使用计算机来为一名在 2000 年出生的婴儿计算要为他/她使用的药物剂量,若这台计算机仍然在使用六位数日期表示法,那么在这台计算机的逻辑中会错误的将这名婴儿误认为是一位出生于 1900 年的百岁老人,并向医生计算出一个适用于老年人的药物剂量,而非新生儿的药物剂量,而此时给出的药物剂量对于一个新生儿来说可能是致命性的。
另一个例子是,税务部门为一家企业计算各类应缴税。由于使用六位数日期,2000 年会被转换为 00,在计算机的运行中,由于前两位被默认为 19,年份会变成 1900年,这就导致计算机会认为企业有 100 年没有缴税,企业的应缴税也将会从原本的几千到几十万瞬间变成企业无法承受的天文数字。
 
另一个例子是,税务部门为一家企业计算各类应缴税。由于使用六位数日期,2000 年会被转换为 {{code|00}},在计算机的运行中,由于前两位被默认为 {{code|19}},年份会变成 1900年,这就导致计算机认为企业有 100 年没有缴税,企业的应缴税也将会从原本的几千到几十万瞬间变成企业无法承受的天文数字。
 
== 修复方式 ==
针对 2000 年问题最直接,也是最彻底的修复方法就是直接将六位日期纠正为完整的八位日期。但是这种方式的成本也是最高的,这是因为若要完全纠正所有音乐和使用两位数年份的程序,以及所有引用日期数据库即可。确保整套系统之内所有程序都被正确转换到新日期格式,因为未经修改的旧程序可能会直接访问到日期字段的内部结构,从而再度破坏修复后的系统。同时需要调整的还包括所有数据字段的位置引用,以及所有包含日期数据记录的格式,此外还需要重新格式化并重写包括过往数据文件在内的所有数据文件,同时还可能需要修改各个系统之间的消息格式。


== 注 ==
== 注 ==

导航菜单