閏年與Excel 1900/1904日期系統_Excel技巧-022

Excel日期其實有2套系統,分別是1900和1904的日期系統,小本自己已知的系統只有1900,是在設定儲存格格式時發現的,在好奇心的驅使下上網去搜尋,才曉得原來Microsoft Excel for Windows的紀元年(起始年)是從1900/1/1開始。

其實Excel還有另一套1904的日期系統喔~
相關歷史和判斷方式KNB都已經整理在下方,就讓我們繼續看下去唄。

<圖片來源:NASA Image and Video Library / LDEF grappled by remote manipulator system (RMS) during STS-32 retrieval>

一、如何曉得Excel是1900還是1904日期系統?

△ 將該儲存格格式,設定為「日期格式」,並輸入數字「1」。
舉例:A3和B3儲存格分別輸入「1」,但因為儲存格的格式設定不同,而得到不同的結果。
A3儲存格,設定為「日期格式」。
B3儲存格,設定為「通用格式」。

根據上述的例子,有沒有發現,Excel會自動帶出1900年,這就表示日期系統是走1900為紀元的版本。

△ 從Excel檔案選項中確認
🡺「檔案」


🡺「選項」

🡺「進階」 >>下拉至四分之三左右 >>「計算此活頁簿時」 >>「□使用1904年日期系統」
※沒有打勾表示使用「1900年日期系統」


二、日期:1900和1904系統

△ 歷史:Lotus 1-2-3與Excel
1982年,微軟推出第一款電子製表軟體「Multiplan」並在CP/M系統上搶得先鋒,但在MS-DOS系統敗給了Lotus 1-2-3。
「Lotus 1-2-3」是在1983年,由美國蓮花軟體公司發布與IBM個人電腦相容的電子試算表Lotus 1-2-3,在當時轟動一時,是世界上第一套銷售100萬套的軟體。
第一套殺手級的應用軟體,擁有三大功能:(1)強大的試算表、(2)圖形整合、(3)簡易資料庫,故稱為1-2-3。在Excel誕生前,Lotus 1-2-3可是是最受歡迎的電子表格軟體。也因此促使了微軟在1985年推出第一款Excel。

△ 閏年問題:1900日期系統
Lotus 1-2-3應用軟體的日期系統,設定1900年為閏年。Excel在當時為了要和領頭羊Lotus 1-2-3並駕齊驅,而使用了相同的日期系統,這麼一來使用者就可以在Excel讀寫Lotus 1-2-3。相反的,Excel也相容了此bug。
到了1988年,Excel的銷量超過了Lotus,使得微軟在PC成為了軟體王國的霸主。後續,Excel約每2年會推出新版本,其中也要兼容自家的老版本,1900日期系統的bug成了難解之謎,因為一旦糾正了這個bug,會出現許多問題:
1. 日期將會誤差一天,修正資料費時費工。
2. 某些函數(如WEEKDAY),計算結果將返回不同的值,會導致無法正常工作。
3. 修正後,會破壞使用日期的日期序列與相容性。

△ 日期系統:1900和1904
◆Microsoft Excel for Windows 默認使用1900年日期系統
Excel將1900年系統認定為閏年,於是多出了1900年02月29日,導致無法正確計算1900年03月01日之前的日期,不過因為大部分的使用者不會使用1900年03月01日之前的日期,所以很少會產生這個問題。

◆Microsoft Excel for Macintosh 默認使用1904年日期系統
由於早期Macintosh計算機不支持1904/01/01之前的日期。此設計是在防止與1900年不是閏年的問題。

三、如何判斷年份是否為閏年?

△ 微軟:閏年判斷解說
步驟1. 該年份是否能被「4」整除,「是」請移至步驟2;「否」請移至步驟5。
步驟2. 該年份是否能被「100」整除,「是」請移至步驟3;「否」請移至步驟4。
步驟3. 該年份是否能被「400」整除,「是」請移至步驟4:「否」請移至步驟5。
步驟4. 該年份為閏年 (有366天)。
步驟5. 該年份不是閏年 (有365天)。

△ 判斷年份是否為閏年公式
A2儲存格:輸入想確認的年份
B2儲存格:=IF(OR(A2-ROUNDDOWN(A2/400,0)*400=0,AND(A2-ROUNDDOWN(A2/4,0)*4=0,A2-ROUNDDOWN(A2/100,0)*100<>0)),"閏年","平年")


四、關於閏年

△ 閏年的制定與地球公轉有關
地球繞行太陽公轉一周的時間為一年,一般認知為365天,但實際公轉所需的時間為365.24219日,也就是每年會多出0.24219天(約5小時48分46秒)。

△ 歷年與回歸年的時間差
歷年:一年的長度為365天,也稱之為「平年」。
曆法上規定一個平年的時間為365天,實際上是比回歸年少算了約5小時48分46秒。

回歸年:一年的實際長度為365.24219天。
年的的制定是利用太陽運動而來,一回歸年是指太陽在天上運行,連續兩次通過春分點的間隔時間,稱為一個回歸年(tropical year),實際長度為365.24219天,這是真正一年的長度。

△ 閏年
四年一閏
當經過了一年,歷年的時間差,會少回歸年0.24219天(約5小時48分46秒),
等到了第四年,這個時間差便會累積至0.96876天(約23小時15分1秒),
回歸年會少歷天將近一天的時間。因此,制定每四年一閏來平衡。
但是,歷年比回歸年少約0.03124天(約45分)。

百年不閏,四百年再閏
以歷年來看,按照「每四年一閏」的規律,等到了第一百年時,
歷年+閏年將累積成36,525日(365*100+25),
比起回歸年的天數多出約0.781天(約18小時44分39秒)。
到了第四百年時,則會憑空多出3.124天的時間差。
所以,第一百年時,是不閏年的,等到第四百年時再閏。

四千年不閏 (按邏輯推敲)
承上述「百年不閏,四百年再閏」的規則,實際上還有0.124天(約2小時58分34秒)的時間差。
等到了第四千年時,回歸年會多歷年1.24天(約1天14分24秒),回歸年整整會多出一天來,
所以,四千年時是不閏年的。
※「四千年不閏」目前尚未有情報顯示四千年是不閏年的。
畢竟,這中間還要考量一些天文之類的專業問題,而且四千年離距今還有1981年之久。

閏年試算表:


因此,在曆法中便有此一說「四年一閏,百年不閏,四百年再閏」。

KNB碎碎唸:
本友們對於1900與1904日期系統應該稍稍有一點概念了吧。
KNB自己也是在蒐集整理資料的過程中,才更加理解1900與1904的差異,覺得自己腦袋的神經元似乎增生了不少XD。
不過這次小本也給自己作業,要將閏年的試算方式記下來,畢竟從小到大都不曉得閏年的計算方式,只知道普遍大家在說的「每四年一閏」。
如果對於閏年有甚麼想法,可以再一起討論喔。

課外補充:
01# 泛科學「閏年怎麼來?為什麼是2月29日?事情沒有你想的那麼簡單」
02# 中央氣象局數位科普網「農曆為何要有閏月的安排?」

引用資料:
01# 微軟「Excel incorrectly assumes that the year 1900 is a leap year」
02# 微軟「Differences between the 1900 and the 1904 date system in Excel」
03# 微軟「在Excel中的日期系統」
04# 微軟「判斷年份是否為閏年的方法」
05# 微軟「變更日期系統、格式或兩位數年份解釋」
06# 「為什麼微軟Office的檔案格式如此複雜?」
07# 維基百科「閏年」
08# 維基百科「Lotus 1-2-3」
09# 維基百科「Microsoft Excel」
10# 臺北市立天文科學教育館
11# 科普中國-科學原理一點通

函數說明:
1. 2019/08/18 Excel函數-031_mod-數學與三角函數
2. 2019/08/18 Excel函數-032_or-邏輯 
3. 2019/08/18 Excel函數-033_and-邏輯 
4. 2019/08/24 Excel活用-007_閏年公式 

留言