1900, 1904, 1970
電腦世界裡面竟然有三種不同的 time system @_@
一直到剛才,我都還認為電腦上面的時間都是以 1970/01/01 00:00:00 UTC 做為 time() 的起始點 (Epoch),然後有些比較古老的程式會用 1900 年當做 base (千禧蟲問題的由來),不過剛剛我在 perldoc -f time 的時候,突然發現一件有趣的事:Mac OS Classic 的 Epoch 是設定在 “本地時區的 1904/01/01 00:00:00″ !! 不過,為什麼要選用 1904 呢 ? 我本來以為 1904 年是某個特殊的年代 (例如說是賈伯斯老兄他老爹的出生年),或者是 1904 是賈伯斯老兄的幸運數字之類的,不過在拜請了 Google 大神以後找到了一篇有趣的文章,這才知道原來是為了要處理潤年問題… XD (註) 另,原來 Excel (on Windows) 內部資料也是用 1900-based 的日期 (這是為了和舊式的 Lotus 1-2-3 相容),而 Excel (on Mac) 是 1904-based,這樣兩邊的資料要怎麼互換呢 ? 很簡單,Excel 裡面有一個 “工具->選項->計算” 裡面就有一個 “1904 年日期系統” 可以選用啦。
註:潤年的規則是 “四年一潤,百年不潤,四百又潤”,1900 年不是潤年,不過 2000 年是潤年,如果設定 1904 年起跑的話,只要判斷 “四年一潤” 這部份就好了,因為下次會碰到 “百年不潤” 這個狀況是 2100 年,賈伯斯老兄早就投胎兩次,要罵也罵不到他了… -_-
再註:以上是我的猜想,該文章只有說 “1900 was not a leap year” 而已。
Comments
Comment from 11
Date: 2006/7/27, 11:33 上午
今年是2006年,又不被4整除,怎么也润7月呢?能说说是为什么吗?
Comment from ijliao
Date: 2006/7/27, 11:38 上午
這位同學,”是不是被 4 整除” 是用來判斷陽曆的,而 “潤七月” 是陰曆的事,你是不是搞混了 ?
Comment from leafy
Date: 2006/9/7, 3:55 下午
There is an interesting explanation here: http://www.joelonsoftware.com/items/2006/06/16.html

Write a comment