2038年問題
跳去導覽
跳去搵嘢
2038年問題(又叫Unix 千年蟲、Y2K38、Y2K+38、Y2.038K)係指因為 Unix 操作系統嘅計時方法而可能搞到一啲軟件喺2038年出錯。好簡單咁講,因為 Unix 有正負整數卅二爻時間限制,即係由1970年1月1號0時0分0秒 [1],再過2³¹咁多秒,約莫去到2038年初,日子會跳「返轉頭」,搞到啲軟件唔知係幾時,啲嘢就錯晒。
卅二爻時間限制[編輯]
喺 Unix 系統同埋啲 Unix-like 嘅系統,係用秒嚟計時間,每秒用一爻(Bit)嚟代表。用嚟代表時間嘅 data type 叫 time_t,喺 Unix 上面,定 time_t 做一個正負整數(signed integer),有 32 爻咁大,有一啲去到 64 爻咁大(係近年 64 bit CPU 出現之後嘅事)。喺 Unix 上面,time_t = 0 規定咗係 1970 年 1 月 1 號 0 時 0 分 0 秒。所以,當 time_t = 10001,時間就係 1970 年 1 月 1 號 1 時 0 分 1 秒。如似類推,響 2 嘅 31 次方(即 2147483648)咁多秒之後,所有可以代表時間嘅整數都用晒,2038 年 1 月 19 號 03 點 14 分 7 秒就係最後可以代表得倒嘅時間。
2147483648咁多秒之後,個系統就會返轉頭,會變成負數,搞到啲軟件唔知係幾時,一要計時間嘅嘢就錯晒。過咗呢一瞬間,時間將會被掩蓋(wrap around)並且內部被表示為一個負數,令啲程序做唔到嘢,因為佢哋無法將呢個時間識別為2038年,而可能會依個別實作而跳返1970年或1901年。錯誤嘅計算及動作可能因此產生。
