- 已加入
- 10/2/06
- 訊息
- 3,116
- 互動分數
- 3
- 點數
- 38
- 年齡
- 47
轉自"維基百科":
在電腦應用上,2038年問題可能會導致某些軟體在2038年無法正常工作。
所有使用POSIX時間表示時間的程序都將受其影響,因為它們以自1970年1月1日經過的秒數(忽略閏秒)來表示時間。
這種時間表示法在類Unix(Unix-like)作業系統上是一個標準,並會影響以其C程式語言開發給其他大部份作業系統使用的軟體。
在大部份的32位作業系統上,此「time_t」數據模式使用一個有正負號的32位元整數(signed int32)存儲計算的秒數。
依照此「time_t」標準,在此格式能被表示的最後時間是2038年1月19日03:14:07,星期二(UTC)。
超過此一瞬間,時間將會被掩蓋(wrap around)且在內部被表示為一個負數,並造成程序無法工作,因為它們無法將此時間識別為2038年,而可能會依個別實作而跳回1970年或1901年。
錯誤的計算及動作可能因此產生。
目前並沒有針對現有的CPU/作業系統搭配的簡單解決方案。
直接將POSIX時間更改為64位模式將會破壞對於軟體、數據存儲以及所有與二進位表示時間相關的部份的二進位兼容性。
更改成無符號的32位運算器(integer)則會影響許多與時間改變相關的程序。
大部份64位作業系統已經把time_t這個系統變數改為64位寬。
不過,其他現有架構的改動仍在進行中,不過預期「應該可以在2038年前完成」。
然而,直到2006年,仍然有數以億計的32位系統在運行中,特別是許多嵌入式系統。
相對於一般電腦科技18至24個月的革命性更新,嵌入式系統可能直至使用壽命終結都不會改變。
32位time_t的使用亦被編碼於文件格式,例如眾所周知的ZIP壓縮格式。其能存在的時間遠比受影響的機器長。
新的64位運算器可以記錄至約2900億年後的292,277,026,596年12月4日15:30:08,星期日(UTC)。
2038
在電腦應用上,2038年問題可能會導致某些軟體在2038年無法正常工作。
所有使用POSIX時間表示時間的程序都將受其影響,因為它們以自1970年1月1日經過的秒數(忽略閏秒)來表示時間。
這種時間表示法在類Unix(Unix-like)作業系統上是一個標準,並會影響以其C程式語言開發給其他大部份作業系統使用的軟體。
在大部份的32位作業系統上,此「time_t」數據模式使用一個有正負號的32位元整數(signed int32)存儲計算的秒數。
依照此「time_t」標準,在此格式能被表示的最後時間是2038年1月19日03:14:07,星期二(UTC)。
超過此一瞬間,時間將會被掩蓋(wrap around)且在內部被表示為一個負數,並造成程序無法工作,因為它們無法將此時間識別為2038年,而可能會依個別實作而跳回1970年或1901年。
錯誤的計算及動作可能因此產生。
目前並沒有針對現有的CPU/作業系統搭配的簡單解決方案。
直接將POSIX時間更改為64位模式將會破壞對於軟體、數據存儲以及所有與二進位表示時間相關的部份的二進位兼容性。
更改成無符號的32位運算器(integer)則會影響許多與時間改變相關的程序。
大部份64位作業系統已經把time_t這個系統變數改為64位寬。
不過,其他現有架構的改動仍在進行中,不過預期「應該可以在2038年前完成」。
然而,直到2006年,仍然有數以億計的32位系統在運行中,特別是許多嵌入式系統。
相對於一般電腦科技18至24個月的革命性更新,嵌入式系統可能直至使用壽命終結都不會改變。
32位time_t的使用亦被編碼於文件格式,例如眾所周知的ZIP壓縮格式。其能存在的時間遠比受影響的機器長。
新的64位運算器可以記錄至約2900億年後的292,277,026,596年12月4日15:30:08,星期日(UTC)。
2038