首先
我們現在的曆法並沒有使用很久
印象沒錯的話
不超過一千年
所以往回推的意義不大
(應該也沒有公式解,因為不規則)
但是如果執意要用現在的曆法往回推
計算方法則完全相同
首先
西元元年 的日曆會和 西元2001年 相同
因為 2001 mod 400 = 1
因此
西元600年 的日曆會和 西元200年 相同,也會和 西元2200年 相同
因為 200 mod 400 = 600 mod 400 = 2200 mod 400 = 200
(1 + (2200 - 2001) + int((2200 - 2001)/4) - int((2200 - 2001)/100)) mod 7 = 3
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
期間有多少個潤年
因此,西元600年的1月1日是星期三
剩下的就都一樣了
這個 form 已經跟公式非常地像了
如果您想寫程式
下面的式子可以給您當參考
Let Y = (Year - 1) mod 400
W = (1 + Y + int(Y/4) - int(Y/100)) mod 7
我比較有興趣的是
存不存在國曆和農曆的轉換的公式解
(可以是任何形式的計算步驟,但是不包括查表法)
"誰知道萬年曆公式??" <nj.bbs@bbs.ndhu.edu.tw> 撰寫於郵件新聞
:44HPci$5Xe@bbs.ndhu.edu.tw...
> ※ 引述《"我只是一個業餘的愛好者" <Traveler@somewhere.universe>, 看板: Sky》之
銘言:
> : 詳細的“公式”,我沒有記
> : 但是不難推算
> : 365 mod 7 = 1
> : 所以沒有潤年的話,同一日期,每年會差一天
> : 例如:今年(2003)的 1/1 是星期三,明年(2004)的 1/1 就是星期四
> : 有潤年當然就是差兩天囉
> : 因為明年(2004)是潤年
> : 所以,後年(2005)的 1/1 就是星期六了
> : 如此這般
> : 找一天當基準
> : 就可以算出其他任何一天是星期幾了
> : 通常是用 1/1 作基準(而且通常是用 2001/1/1)
> : 然後去算 ?/? 是一年當中的第幾天
> : 例如:
> : 已知 2001/1/1 是星期一 ──┐ ┌─ 沒有潤年
> : │ │
> : 則今年的 1/1 是星期三 1 + (2003-2001) + 0 = 3
> : └───────────────┘
> : 則今年的 4/5 是星期幾?
> : (3 + (31+28+31+5) - 1) mod 7 = 6
> : 另外
> : 2001年的 1/1 會和 2401 年的 1/1 同一天
> : 因為 400 年就差了 400 天
> : 又潤了 97 次,差了 97 天
> : (400 + 97) mod 7 = 0
> : 有錯請指教
>
> 先謝謝你花時間解釋...
> 你的理論想法跟我一樣..
> 不過這大概適用於最近幾年的吧..
> 例如..如果我問西元600年的6月6日星期幾呢?
> 可不可以用很快時間計算就可以算出了嗎??
> 會不會有一種簡單的公式呢?
> 謝謝你的回答!