10000年問題
![本頁使用了標題或全文手工轉換](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
10000年問題(Year 10000 Problem,簡稱Y10K)是所有軟件可能在表示五位數年份時發生的問題的總稱。在2000年問題引起人們關注的一段時間中,10000年問題曾被以幽默的方式被人們在媒體中披露。實際上,在10000年時,由於未來科技及軟件的進步-不再只以少數幾個數字表示年份,這可能不再是個問題。
10000年問題 |
全球——9999年12月31日 |
距今還有2912930天 |
以當地時間計算 |
如果發現倒數時間不準確,請清除頁面快取 |
需處理日期之軟件可能發生的問題
許多需處理日期的程式會在2000年時將年份錯誤顯示為1900年、19100年或100年,因為工程師直接在以兩位數記錄的年份前面加上「19」以簡化程式或節省記憶體空間。這類的日期顯示錯誤不太可能在10000年來臨時再度發生,因為這種記錄方式在此時是沒有用處的。然而,部份程式在處理日期時只會顯示末4碼的年份。這可能會導致10000年被顯示為「0000年」。
這個問題可以在今日相當普及的試算表軟件Microsoft Excel中發現。因為它以「自1899年12月31日起經過的天數」來儲存日期(以此規則,第1天是1900年1月1日)。在資料庫軟件Microsoft Access中也有同樣的問題。它以「自1899年12月30日起經過的天數」來儲存日期(第一天是1899年12月31日)。在上述任一個程式中,輸入第2958465天會產生日期9999年12月31日。
對此數值再加1(即2958466)則會造成程式語言中的溢位(Excel中為顯示一列#號),但事實上,2958465的二進制表示為101101'00100100'10000001,而2958466則是101101'00100100'10000010。這兩個值在二進制中皆為22位數。在這些軟件中提及的溢位問題最有可能是源於它們的浮點數表示法(在Excel中,第1.5天是1900年1月1日的12:00:00)。它們可能被以變種的IEEE浮點標準儲存。而此一部份之數字有23位數的空間。
恆今基金會正嘗試促進以5位數書寫/記錄年份的習慣。也就是說,2000年將會被記錄為「02000」,如此將能預防10000年問題(一萬年蟲問題),但這將再次遇到100000年問題(十萬年蟲問題)。
有記錄的問題
2000年問題因為以2位數字表示4位元數年份,而前兩位的"世紀"年份無法被正確決定而產生。被記錄的年份應該加上2位的"世紀"年份以解決此問題。10000年問題不需要更新任何舊紀錄,因為4位元數字已經足夠紀錄4位元數的年份。它將只需要新的紀錄方式以記錄5位數年份。然而,仍然有一個在使用字典序(lexical sorting)記錄時可能會發生的問題。例如:在表示10000年的日期時,它可能會出現在1000年的旁邊,而不是在9999年的旁邊。
參看
外部連結
- RFC2550: Y10K and beyond—一份在1999年愚人節發行的RFC檔案,但是有很多實用的資料
- Computer systems worry over pending "year 10,000" problem
- 某用戶親自測試10000年問題(頁面存檔備份,存於互聯網檔案館)
|