這是一個以 javascript 實作的萬年曆。
用 Google 找到第一個 hit 的萬年曆公式,其演算法 (如下) 根本就是錯的。
(年+年/4+年/400-年/100+月日天數-1)/7 的餘數
因此,這裡經重新運算,找出正確的演算法。
找出公式,首先得找出逝去的天數,由於1年有365天(在不論閏年的情況下),而每週有七天,365 % 7 = 1,所以每過一年,在星期上來說,跟過一天是相同的,有一個需要注意的點,由於是算經過的年份,所以必需要把西元年 - 1
計算完年後,只要再加上尚未過完的那一年,已過了幾天就幾乎逼近答案了(ex.我們要找 Aug.12, 2023 ,就要找出2023年中,從Jan.1到Aug.12過了幾天)。
最後,我們必須考慮閏年造成的差距,加上了閏年(規則如下)所額外多出的天數後,再把此結果 % 7,就是正確答案了!
閏年規則:4年1閏,100年不閏,400年再閏
在曆法制定後,曾因為閏年的方式有誤,而竟多了整整十天,故於 Oct.4, 1582 修正曆法,也讓隔天成為了 Oct.15, 1582!