編 算 農 曆

初稿: 2018年10月      最近一次重大修訂: 2022年4月17日


本網站的農曆涵蓋年份是公元前722年至公元2200年,可分為七個時段:現代(1912年–2200年)、清朝(1645年–1911年)、西漢中葉至明末(前104年–1644年)、南明及明鄭(1645–1683)、秦至漢初(前221年–前104年)、戰國時代(前480年–前222年)及春秋時代(前722年–前481年)。每時段採用不同的方法計算農曆,以下七節簡單介紹這些計算方法。

下面用Ny表示年首最接近公曆1月1日的中曆年。例如N150指漢桓帝和平元年,始於公元150年2月15日,終於151年2月3日。


內容

  1. 現 代 (1912年 – 2200年)
  2. 清 朝 (1645年 – 1911年)
  3. 西 漢 中 葉 至 明 末 (前104年 – 1644年)
  4. 南 明 及 明 鄭 (1645年 – 1683年)
  5. 秦 至 漢 初 (前221年 – 前104年)
  6. 戰 國 時 代 (前480年 – 前222年)
  7. 春 秋 時 代 (前722年 – 前481年)

    備 註 和 參 考 文 獻


現 代 (1912年 – 2200年)

這時段的農曆根據《農曆的編算和頒行》文件国标(編號GB/T 33661-2017)規定的方法編算(詳情可參閱農曆法則網頁),計算結果與中國科學院紫金山天文臺出版的書籍裡的農曆資料核對過。太陽和月球的地心位置用美國噴射推進實驗室(Jet Propulsion Laboratory)編制的DE431DE431曆表計算。註一 噴射推進實驗室的DE系列曆表用數值積分方法計算太陽系行星及月球的位置,是目前世界上最準確的曆表之一,計算時考慮到343個質量比較大的小行星對大行星的重力攝動。太陽系各天體的運動計及廣義相對論對牛頓力學的修正,廣義相對論的效應以參數化後牛頓n體度規推出的動力學方程描述。此外還計及地球、月球、及太陽因偏離完美球狀而引起的額外加速度。用DE431曆表計算出的地心位置經過光行時及光行差的修正後,得到的是國際天球參考系(ICRS)的地心座標視位置,再經過參考架偏差矩陣(frame bias matrix)以及歲差和章動的變換後算出地心視位置相對於瞬時黃道及真春分點的黃道座標。歲差採用Vondrák等人於2011年建立的歲差模型Vondrák計算。章動根據國際天文聯會推薦的IAU2000A章動模型計算,計算公式取自國際地球自轉和參考系服務規範(IERS Conventions)在2010年發佈的文件IERS10和美國海軍天文臺在2005年發佈的文件Kaplan。月相和節氣的質心力學時(TDB)時刻用牛顿-拉弗森(Newton-Raphson)求根法計算,所得的TDB時刻再轉換成UTC+8(1972年及以後)或UT1+8(1972年前)時刻。換算過程中省略了TDB到地球時(TT)的轉換,因為兩者差異小於0.002秒,可視為等同。TT到UT1的轉換公式取自Stephenson等人(2016)及Morrison等人(2021)的擬合公式SM16,1972年到現在的TT-UTC根據正式公佈的閏秒計算,2024年後的TT-UTC根據Stephenson等人(2016)及Morrison等人(2021)的外推公式計算,其實他們的公式是用來預推TT-UT1的,但是也可用來作TT-UTC的近似值,因為根據規定UTC和UT1相差不會超過0.9秒。我已把本網站編算農曆時詳細的數學計算寫在這pdf文件供有興趣的讀者參閱。

本網站以前用國際天文聯會推薦的IAU2006模型計算歲差,現在改用Vondrák等人的歲差模型,原因是IAU2006模型只適用於公元2000年前後一千年左右,以前本網站載的農曆年限是公元1841年至2200年,用IAU2006模型沒有問題。現在本網站的農曆年限是公元前722年至公元2200年,雖然古代的農曆根據實曆,但是年曆網頁仍載有用現代方法計算當時合朔和二十四節氣的UT1+8時刻以供參考,因此IAU2006模型便有所不足。Vondrák等人的新歲差模型有效年限是公元2000年前後二十萬年,我比較過用Vondrák等人的模型和IAU2006模型計算出的月相和二十四節氣的時刻,發現在1600年至2500年間,兩歲差模型的二十四節氣時刻偏差不超過0.19秒、月相時刻偏差不超過0.00038秒,因此IAU2006模型與Vondrák等人的新模型在這時段可視為等同。

用以上方法編算的農曆與兩本曆書比對過,一本是中國科學院紫金山天文臺編的《新编万年历(修定本)》新编万年历,另一本是劉寶琳編的《100年袖珍干支月曆》劉寶琳。《100年袖珍干支月曆》的編者劉寶琳曾是紫金山天文臺的研究員,編該書時已從事曆算工作近四十年,並曾以紫金山天文臺的名義出版了多種曆書,《新编万年历》也是由他主編的。《新编万年历》的年限是從1840年(道光二十年)到2050年,《100年袖珍干支月曆》的年限是從1911年到2010年。兩本書的農曆資料是一致的,只是《100年袖珍干支月曆》還把朔、望和二十四節氣的時刻列出到分鐘。兩本書中1912年到1928年的農曆根據北洋政府教育部中央觀象臺編的《中華民國曆書》,1929年到1948年的農曆根據中華民國中央研究院天文研究所編的《國民曆》註二,1949年及以後的農曆則根據紫金山天文臺編算的農曆。

本網站編算的這時段農曆與兩本書所載的資料大多一致,遇到農曆初一的日期不一致時就以兩本書的資料為準。不一致的情況有三次而且都是發生在1929年以前。在這些不一致的情況,合朔的時刻仍然用我的計算,只是農曆初一的日期改了。除了朔日的日期有差異外,二十四節氣的日期有時也有差異。除了一項外,所有的差異也都是發生在1929年以前。下表把所有的合朔和二十四節氣的日期差異列出來。


農 曆 年農 曆 月初 一 的 公 曆 日 期*合 朔 時 刻 (UT1+8)
N1914 癸 丑 年十 月1914年11月17日1914年11月18日 00:02
N1916 丙 辰 年正 月1916年2月3日1916年2月4日 00:05
N1920 庚 申 年十 月1920年11月10日1920年11月11日 00:05

* 初一的日期根據當時政府頒行的日曆。


公 曆 年節 氣本網站計算的節氣時刻(UT1+8)當時政府頒行的日曆
1912小雪11月22日 23:4811月23日 00:39
1913秋分9月23日 23:539月24日 00:48
1917大雪12月8日 00:0112月7日 23:47
1927白露9月9日 00:059月8日 23:52
1928夏至6月22日 00:066月21日 23:53
1979大寒1月20日 23:59:541月21日 00:00

1914年以前的差異主要是因為當時的計算方法根據乾隆七年(1742年)編成的《曆象考成後編》,《曆象考成後編》成書時還算先進(見下一節),現在看來是很不準的,而且當時用北京地方視時。用《曆象考成後編》推算的時刻可以有幾分鐘至幾十多分鐘的誤差。自1914年起曆法計算採用國外新方法,改北京地方視時為北京地方平時(UT+7:46),與東經120°地方平時有十四分鐘偏差,這就是1914年、1916年、1917年、1920年、1927年和1928年出現日期差異的原因,1929年起改用東經120°平時(UT+8)(UTC要到1960年代才創立)後鮮有差異。至於1979年的情況比較特殊,我據DE431曆表推算的大寒時刻在1月21日零時之前六秒,《100年袖珍干支月曆》和《一九七九年中国天文年历》載的時刻是00:00(用《一九七九年中国天文年历》的太陽表數據算出的時刻是00:00:12),可見大寒時刻非常接近午夜零時,要用很準確的曆表才能把確實日期算出。1984年以前,世界上大多數的天文年曆(包括紫金山天文臺編的《中国天文年历 》)是根據1895年美國天文學家西蒙‧紐康(Simon Newcomb)編的太陽表計算太陽位置,紐康太陽表的精確度約為1",所以用其計算的二十四節氣時刻可以有25秒的誤差。《100年袖珍干支月曆》的節氣計算可能也是用類似精度的太陽曆表計算,因為書中所列的節氣時刻和我推算的時刻常有一分鐘偏差,而這樣的偏差不見於紫金山天文臺編的《2015年中国天文年历 》,其實這也不奇怪,因為《2015年中国天文年历 》用DE421曆表計算太陽位置,DE421和DE431在近幾十年的差異十分微少。不管怎樣,這些二十四節氣的日期雖然相差一天,但是並沒有影響農曆月份的編排,我在本網站相關的網頁用紅色字形指出了這些差異。

農曆法則網頁提到數十年後的合朔和二十四節氣的UTC+8時刻現在暫時不能準確計算,有若干合朔和節氣的預推時刻接近午夜零時,所以確實日期可能和預推日期有一日之差。合朔日期可能有一日之差即意味著預推的農曆初一日可能有一日之差。至於二十四節氣的情況比較簡單,因為節氣有一日之差完全不影響農曆月份的編排,中氣有一日之差也大多無礙,除非初一日恰好發生在這個中氣的一兩日內,這種特殊情況如果出現或會影響閏月及其他月份次序。我的計算顯示這種特殊情況直到2200年也不會發生。下表列出2050年後預推時刻接近午夜零時的合朔和二十四節氣,因此確實日期或會和預推日期有一日之差。這些情況在本網站的相關網頁用紅色字形註明。


公 曆 年合朔的預推時刻(UTC+8)
20579月29日 00:00:40
20899月4日 23:59:11
20978月8日 00:02
21152月24日 23:59
21165月12日 23:59
21339月29日 00:02
216512月4日 00:00:29
217210月18日 00:01

公 曆 年節 氣預 推 時 刻 (UTC+8)
2051春 分3月20日 23:59:19
2083立 春2月3日 23:59:27
2084春 分3月20日 00:00:35
2114小 雪11月22日 23:58
2142白 露9月8日 00:00:11
2155霜 降10月23日 23:58
2157冬 至12月21日 23:59
2183春 分3月20日 23:59:46
2186立 春2月4日 00:02

清 朝 (1645年 – 1911年)

清朝曆法的編算法則和現在的基本上一致,只是時間用北京的地方真太陽時,而不是東經120°區時(即UT1+8)。本網站對這時段的曆日先用現代方法編算,然後與實曆核對把不一致的曆日改正。曆日資料是根據《新编万年历》新编万年历和《三千五百年历日天象》張培瑜97。《新编万年历》在1912年前的日曆根據北京故宮博物院收藏的《大清時憲書》,但是該書只載有1840年後的農曆。《三千五百年历日天象》裡的農曆資料是作者張培瑜根據史載古代曆法的編算法則復原當時曆法,並與存世的曆日資料核對過,書中前言說近400多年的曆書根本上完整地保存了,所以書中至少在明朝中葉以後的曆日應是大部份符合當時頒行的日曆,而我也檢查過書中至少在1840年至1911年的曆日資料與《新编万年历》一致。

比較實曆與用現代方法編算的農曆,發現這時段有二百多處不一致。雖然要作二百多項修改,總好過把資料用手一一輸入。造成這些差異原因除了是所用的時間不同外,還與當時的計算方法不夠準確有關。

2020-12-12 更新: 造了時憲曆日月位置及節氣和月相時刻的在線工具,或可供研究清朝天文學史的學者參考。

清朝的曆法基本上用明末制定的《崇禎曆書》。明朝末年,欽天監推算的日月食有三次與實際天象相差頗大,崇禎皇帝接納改曆建議,命徐光啟組織曆局研究改曆。徐光啟主張採用歐州傳教士傳入的西方天文學計算曆法,曆局先後聘請耶穌會義大利傳教士龍華民(Nicholas Longobardi)、德國傳教士鄧玉函(Johann Schreck)、義大利傳教士羅雅谷(Giacomo Rho)、德國傳教士湯若望(Johann Adam Schall von Bell)等人參與改曆工作,五年後於崇禎七年十一月編譯成一百三十七卷的《崇禎曆書》。由於遭到守舊派的阻撓,新曆法遲遲未有實行。在《明史‧曆志》中記錄了發生過八次中西天文學的較量,包括日食、月食、木星、水星、火星的運動,結果是西法以八比零擊敗中法大獲全勝。崇禎帝深知西法之密,於崇禎十六年(1643年)八月下定頒布新曆的決心,但頒行《崇禎曆書》的命令還沒有實施,明朝就已滅亡。

順治元年(1644年)五月滿清入關後,攝政王多爾袞聽說西洋新曆法精湛,召湯若望入朝問新法之事,不久決定採用。湯若望將《崇禎曆書》刪改壓縮成一百零三卷,更名為《西洋新法曆書》。順治二年(公元1645年),清政府正式頒行依新曆法編算的《時憲曆》。新曆法採用定氣法計算二十四節氣,打破了二千多年來一直沿用的平氣法。日月五星的計算採用第谷‧布拉赫(Tycho Brahe)的系統。

康熙五年(1666年) 康熙六年(1667)至八年(1669年)因曆獄而復用明朝《大統曆》,二十四節氣改回平氣。清朝曆算家汪曰楨在其《歷代長術輯要》說清欽天監編的《御定萬年書》(乾隆年間編成,後來多次續修延長年限)在這幾年的二十四節氣日期仍用定氣,係後來以新法追改之故。鄭鶴聲《近世中西史日對照表》鄭鶴聲的二十四節氣日期採用《萬年書》的數據,所以也與實曆不符,查張培瑜《三千五百年历日天象》也發現其二十四節氣日期是定氣,亦與《近世中西史日對照表》的資料一致。本網站在這幾年提供兩套曆書節氣:其一取《三千五百年历日天象》的數據,此乃根據西洋新法追推的定氣;另一套曆書節氣根據《大統曆》推算。至於朔日,依明朝《大統曆》和依《西洋新法曆書》計算結果在這幾年的日期完全一致,只是由於節氣日期的差異使康熙八年和九年的置閏出現分歧:依《大統曆》康熙八年閏十二月,依《西洋新法曆書》則在康熙九年閏二月。這情況史書也有記載:康熙八年三月,比利時傳教士南懷仁(Ferdinand Verbiest)受任欽天監監副治理曆法,指出按舊法推出的閏十二月不妥,按新法置閏當在明年二月。康熙帝命禮部詳查此事,欽天監官員多支持南懷仁,於是下詔「罷康熙八年十二月閏、移置康熙九年二月。其節氣占候、悉從南懷仁之言」(《康熙朝實錄‧卷二十七》)。由此可知《大清康熙八年歲次己酉時憲曆》有兩個版本,一是以舊法推算,一是以西洋新法推算。

2024年5月更新: 臺灣國立故宮博物院的清代檔案檢索系統藏有若干康熙初年的《大清七政經緯躔度時憲曆》,其中康熙五年所載的節氣日期和時刻符合《西洋新法曆書》的推步,康熙六年至八年則符合大統曆的推步。

《西洋新法曆書》中有圖與表不合的情況,而且有很多隱晦難曉之處。清政府於康熙五十三年(1714年)開始修訂《西洋新法曆書》,在康熙六十一年(1722年)完成了《欽若曆書》,雍正年間更名為《曆象考成》。此書以康熙帝的名義御製,康熙帝有意擺脫傳教士對曆算的控制,在暢春園蒙養齋創建了算學館,招攬人才研習西方的數學和天文學及編撰書籍,《曆象考成》就有很多中國學者參與編寫,書中也加入了一些中國學者的研究成果。《曆象考成》成書後,算學館裡的中國學者認為他們已掌握了西方的天文曆算,開始挑戰傳教士對曆算的領導地位,有人提出欽天監不應再由西洋人把持。其實他們對當時西方天文學的進展一無所知,《曆象考成》仍然沿襲第谷的體系,不但已落後於當時西方的天文學,而且因年代日久而誤差漸大。雍正八年(1730年)六月初一發生日食,這是《曆象考成》成書後首次在京師可見的日食。欽天監監正戴進賢(Ignatius Kögler)和監副徐懋德(Andreas Pereira)為了顯示他們的曆算權威仍無可取代,趁這次日食指出《曆象考成》的預報與觀測有微小偏差,欽天監滿洲監正明圖上奏說若不及時修理曆法恐愈久愈差。於是戴進賢和徐懋德奉命修訂曆法,他們根據法國天文學家喬凡尼‧卡西尼(Giovanni Cassini)及德國傳教士格拉馬迪庫思(Nicasius Grammaticus)的計算方法和數據製定了一份日躔、月離表,即太陽和月球運動表。他們把表格附在《曆象考成》諸表之末,既沒有說明製表之依據,也不說明使用方法,欽天監中只有戴進賢、徐懋德及(食員外郎俸五官正)蒙古人明安圖三人懂得使用新表,情況很不尋常。唯恐曆法久而失傳,協辨吏部尚書顧琮於乾隆二年奏請增補圖說,於是清政府組織人員重修《曆象考成》,於乾隆七年(1742年)編成《曆象考成後編》。書中摒棄了第谷體系,引進開普勒第一和第二定律,不過橢圓的焦點是地球而不是太陽,這在具體計算上得出的結果是相同的。月球的運動源自牛頓的月亮模型,這模型結合了開普勒定律、英國天文學家霍羅斯(Jeremiah Horrocks)的橢圓心轉動模型和牛頓用其萬有引力理論推出的若干修正項。Cook, Kollerstrom

由於用第谷體系計算的曆法不夠準確,二十四節氣的日期和用現代計算的常有差異,所以在年曆網頁裡在清初仍然列出曆書節氣的日期,即按當時《時憲曆》計算的日期。改用開普勒定理計算曆法後,節氣日期差異大大減小,因此在1733年後除了那些曆書節氣與現代計算有差異外,其餘略去不註。至於合朔,朔日就是每月的初一日,本網站的古代農曆日期全部依當時的曆法,不用另外註明曆書朔日。

《時憲曆》打破傳統用定氣法計算二十四節氣後,置閏法則出現了一些問題,以前一直沿用的無中氣置閏法不能再用,因為在一歲內可能會出現兩個無中氣的月份。明末曆局在研究曆改時已注意到這個問題,當時的曆局官員李天經主張按中氣時刻在合朔時刻先後來決定其所屬之月份。如果有中氣和合朔發生在同一日,根據傳統中氣屬於這個月的初一日,但李天經主張要考慮中氣的時刻在合朔時刻之前還是之後,如果在合朔之後,則屬這個月,如果在合朔之前,則屬前一個月。這新法則能應付幾乎所有因採用定氣法而出現的置閏問題。順治二年(1645年)首次用新法編曆,《順治二年歲次乙酉時憲曆》所載的中氣大暑出現在閏六月初一,違反了閏月不含中氣的規定。汪曰楨在其《歷代長術輯要》解釋說雖然大暑與朔發生在同一日,大暑的時刻早於合朔時刻,屬於前月之中氣,所以閏六月不含中氣。這與李天經的說法一致。但是這新法則只在順治二年用過,以後不再使用。比較順治二年以及以後的閏月安排,顯示當時還沒有完全確立對於採用定氣後的置閏法則。《清史稿》明確說明時憲曆最終採用的置閏法則:「求閏月,以前後兩年有冬至之月為準。中積十三月者,以無中氣之月,從前月置閏。一歲中兩無中氣者,置在前無中氣之月為閏。」註四這就是農曆法則網頁所列的法則五。不取李天經之法,可能是因為傳統的無中氣法已能處理大多數的閏月。平歲有無中氣之月或閏歲有兩無中氣之月畢竟罕見,只須稍修改無中氣法便可解決問題。如果用李天經之法,就會出現順治二年的情況,即把本來無中氣法能處理的情況也改得不合傳統。採用定氣法計算二十四節氣已使守舊派十分不滿曉庵新法,如果再用李天經之法必然會引起更多爭議。


西 漢 中 葉 至 明 末 (前104年 – 1644年)

在這一千七百多年間,在中國行用的曆法多達四十部以上,計算方法和現代的大有不同,如果要一一追尋各曆法的計算方法然後核對計算結果就會很費時,所以本網站直接採用《三千五百年历日天象》張培瑜97的數據。核對資料時發現該書在這段期間有四十多處錯誤,其中大部分已被寿星天文历的創始人許劍偉指出,現將已發現的錯誤在此網頁列出。此外,《三千五百年历日天象》在漢武帝太初元年(公元前104年)至漢章帝建初九年(84年)間列出的二十四節氣按《漢書‧律曆志》的次序,即驚蟄在雨水之前、穀雨在清明之前;在建初九年之後則按《淮南子‧天文訓》的次序,即和現在通行的次序一致。《淮南子》成書於公元前139年(漢武帝建元三年)左右,《漢書》則書於公元90年左右(漢和帝年間),可見二十四節氣的次序在東漢時還沒有完全確定。為了避免混淆,本網站不跟從《三千五百年历日天象》,二十四節氣一律按《淮南子‧天文訓》的次序。

本網站從漢武帝太初元年(公元前104年)五月起用《三千五百年历日天象》的數據,五月前用一套漢初曆法的復原法計算(見第5節)。

從漢武帝太初元年至明末這一千七百多年間,有幾件事值得注意:

  1. 發生了四次改正朔事件:

    • 公元9年,王莽建立新朝,改正朔以殷正建丑(即現在的十二月)為年首,故N8(戊辰年)只有十一個月。農曆月的數序是:建丑為正月、建寅為二月等等,與現在通用的月序相差一個月。新朝於地皇四年(癸未年,公元23年)亡,綠林軍擁立漢淮南王劉玄为帝,改元更始元年,恢復以建寅(即現在的正月)為年首。地皇四年和更始元年有十一個月重疊。地皇四年用丑正、更始元年用寅正,所以地皇四年二月相當於更始元年正月、地皇四年三月相當於更始元年二月……地皇四年十二月相當於更始元年十一月。
    • 魏青龍五年(丁巳年,N237),魏明帝改正朔,以殷正建丑(即現在的十二月)為年首,二月後實施,並改元景初元年。所以N237丁巳年沒有三月份,二月後的月份是四月。農曆月的數序是:建丑為正月、建寅為二月等等,與現在通用的月序相差一個月。景初三年(N239)明帝駕崩,次年恢復以建寅(即現在的正月)為年首。景初三年有兩個十二月(建子和建丑)。另外,青龍五年正月開始使用新曆法,使青龍四年十二月只有二十八日。
    • 公元689年12月,武則天改正朔,以周正建子(即現在的十一月)為年首,建子改稱正月,建寅(即現在的正月)改稱一月,其他農曆月的數序不變(即正月、十二月、一月、二月⋯⋯十月)。公元701年2月又改回以建寅為年首。N689(己丑年)只有十一個月(其中一個月是閏月),而N700(庚子年)有十五個月(其中一個月是閏月)。
    • 公元761年12月,唐肅宗改正朔,以周正建子(即現在的十一月)為年首,建子改稱正月、建丑(即現在的十二月)改稱二月、建寅(即現在的正月)改稱三月等等,與現在通用的月序相差二個月。公元762年4月又把農曆月的數序改回以建寅為正月、建卯為二月等。N761(辛丑年)只有十個月,而N762(壬寅年)則有十四個月,其中有兩個四月(建卯和建巳)和兩個五月(建辰和建午)。
  2. 從漢武帝太初元年至明末這一千七百多年間,中國有時處於分裂局面,有多個政權並存,行用的曆法也不盡相同。我花了一些時間涉獵了其中二十部古代曆法,成功計算了665年以前以及822至892年和1281年至1644年的日曆,619年以前的日曆幾乎完全符合《三千五百年历日天象》的數據,619-665、822-892和1281-1644年的日曆也大部份和《三千五百年历日天象》一致。撐握了這些曆法的推步後就著手編製分裂時代諸國的日曆。

  3. 《三千五百年历日天象》附表2到附表4載有分裂時代諸國的朔閏異同表,書中前言說附表的數據參照清朝曆算家汪曰楨編的《歷代長術輯要》。為了方便核對我的推步結果,我用計算機編製了依該書附表格式的三國南北朝時期的朔閏異同表,發現我的推步結果只有幾處與該書的附表不合。其中有三例是該書的附表與正文的數據不合,我的推步符合正文。由於我不是歷史學專家,無從判斷孰是孰非,所以只註明這些矛盾的資料。對於其餘幾處差異,我比較了台灣中央研究院的兩千年中西曆轉換網站和汪曰楨編的《歷代長術輯要》,有四處這些資料和《三千五百年历日天象》一致,於是就修改我的數據,但有四處《三千五百年历日天象》的數據與《歷代長術輯要》或兩千年中西曆轉換網站不一致,所以不取該書的數據。

    我本來也想自行編算遼金元三朝的日曆,但是遇到了困難。遼初用後晉司天監馬重績的《調元曆》,遼聖宗統和十二年(994年)改用賈俊的《大明曆》,到金天會十五年(1137年)改用司天楊級的《大明曆》,金大定廿二年(1182年)又用趙知微的《重修大明曆》。《調元曆》和賈俊的《大明曆》已失傳,元朝史官修《遼史‧曆象志》時不知賈俊《大明曆》的內容,竟然說是幾百年前祖沖之的《大明曆》,然後轉抄了《宋書》所載祖沖之的《大明曆》!對於這兩部已失傳的曆法,汪曰楨用他認為相近的曆法替代。《歷代長術輯要》以《宣明曆》替代《調元曆》;以金趙知微的《重修大明曆》替代賈俊的《大明曆》,然後根據《遼史》調整閏月。查看《三千五百年历日天象》附表4的宋遼金元朔閏異同表,發現這時期南北兩朝的曆日差異不大。與其效法汪曰楨先用他曆計算然後調整曆日,不如直接採用附表4的數據,結果是計算遼金元日曆的 JavaScript 程式及所需的 JSON 數據加起來比三國和南北朝的日曆計算還要簡潔。這等同於先用南朝的曆法計算然後調整曆日用於北朝,複雜的計算其實隱藏在南朝的曆法計算中。附表4沒有載遼金元曆法的二十四節氣,年曆網頁的遼金元曆書節氣須要另外計算,計算方法在宋遼金元朔閏異同表網頁表末的備註簡略敘述。

    綜合分裂時代的曆法計算,年曆網頁加了三國時蜀和吳的年曆;十六國時加了後秦和北涼的年曆;南北朝時加了北魏、東魏、西魏、北齊、北周及隋朝滅陳前的隋朝年曆;五代末年和宋朝時加了遼、金、蒙古和元朝滅宋前的年曆。只要輸入分裂時代的公曆年,便有按鍵選擇分裂時代的王朝。朔閏表網頁年號網頁也加了這些王朝的朔閏表和紀年表。

  4. 在學習明朝《大統曆》的氣朔推步時,發現了《三千五百年历日天象》、薛仲三和歐陽頤的《兩千年中西曆對照表》、陳垣的《二十史朔閏表》及汪曰楨的《歷代長術輯要》在明朝竟然至少有七個朔日錯誤,現已撰「明朝《大統曆》的定朔計算及曆表朔日訂正」詳細說明,並根據現存明朝《大統曆》曆書改正了本網站明朝的七個朔日資料。

  5. 中國的曆法在這段期間頻頻更改,公曆卻相當穩定,只有一次重大的改革,即1582年的格里高里曆改,1582年前公曆用儒略曆,凡能被四整除的年份是閏年,平年365日,閏年366日,一年的平均日數是365.25日,比回歸年長0.0078日,積128年就有一日偏差,這使春分日期在儒略曆不斷推前。復活節是西方重要的宗教節日,復活節的日期在公元325年確立,取春分月圓後的第一個星期日,但是「春分」和「月圓」不用天文學的定義,而是用近似值。計算復活節時「春分」當時定為儒略曆的3月21日,因為這是當時春分在儒略曆的近似日期,「月圓」則定為教會曆(ecclesiastical calendar)某月的第十四日。教會曆是一種陰陽曆,曆法的朔望依默冬章(Metonic cycle)計算,即假設235個朔望月等同於19個回歸年,這也是中國古代十九年七閏法的依據。但是235個朔望月(6939.688日)比19個回歸年(6939.6075日)長0.08日,積久漸差。曆法之回歸年及朔望月偏差使春分日期在儒略曆的日期不斷提前,天文學上月圓之日亦漸漸偏離曆法的月圓日。到了十六世紀末,春分日期已移到3月11日,望日也比曆法推算的月圓日早了四日,曆法「失天」的情況引起學者對復活節計算方法的爭議,並要求改曆。於是教皇格里高里十三世在1582年宣佈改曆,把當年10月4日之下一日定為10月15日,跳了十日使春分的日期回到3月21日,並規定在四百年中減去三個閏年,具體方法是凡公曆年是4的倍數但不是100的倍數(例如2016年)都是閏年,如果公曆年是100的倍數但不是400的倍數(例如1900年)就不閏,如果公曆年是400的倍數(例如2000年)則閏。這就是現在行用的格里高里曆,其一年平均日數是365.2425日,頗接近回歸年的數值365.2422日,積3300年才有一日偏差。曆改也修改了朔望的計算,使算出的朔望日在較長時間內不偏離真實的朔望日。然而只有義大利、西班牙、葡萄牙、法國、波蘭、低地國家及這些國家的殖民地在1582年遵從教皇指示改用新曆,基督新教及東正教等國家起初抵制新曆,後來陸逐採用。希臘於1923年才改用格里曆,是最遲採用新曆的歐洲國家。雖然西方國家並不是都在1582年改用格里曆,這裡遵從慣例在1582年10月15日起改用格里曆紀日。註三

  6. 儒略曆是羅馬共和國獨裁官儒略‧凱撒(Julius Ceasar)採納埃及亞歷山大的希臘天文學家索西琴尼(Sosigenes of Alexandria)計算的曆法,在公元前45年1月1日正式使用。凱撒不久被殺,而儒略曆在最初36年執行上出現了置閏錯誤,本來應該每四年一閏卻變成每三年一閏,到了公元前8年才決定糾正錯誤。由於已多閏了三次,於是在其後十二年間停閏三次,到公元8年才恢復正常的閏年。

    近代學者陳垣在其著作《二十史朔閏表》和《中西回史日曆》在公元元年開始註有公曆日期,採用古羅馬曆法,公元4年停閏,因此公元元年至3年的日期與現行各國曆表都相差一日。上面提到的兩千年中西曆轉換網站也是在公元4年停閏。張培瑜對這做法不以為然,他在《三千五百年历日天象》前言指出公曆紀年不是古羅馬人在公元元年所創,而是後人在六世紀時創立的,對之前的紀年全部用逆推。西方各國的古代曆法也是十分混亂,創立公曆紀年紀日的目的就是為了將各國曆法轉換成統一的紀日系統以方便研究歷史,所以不應該將古羅馬曆的混亂情況帶到公曆。我贊同張培瑜的見解,本網站的公曆在公元8年以前也是用逆推的儒略曆(proleptic Julian calendar),不考慮古羅馬曆的置閏錯誤,也不考慮2月和8月的日數可能更改過。這也是現代西方學者一般採用的紀年紀日法。

  7. 公曆月名的英文是January, February, March, April, May, June, July, August, September, October, November和December,中文一般意譯為1月、2月……12月等,但是從January到August的八個月名其實和月序無關,September至December則是七月、八月、九月和十月的意思,這是因為古羅馬曆本來以March作為一年的起始月,十二個月中只有前十個月有月名: March, April, May, June, Quintilis, Sextilis, September, October, November 和 December,最後兩個月沒有月名。March, April, May, June來自戰神瑪爾斯(Mars)、花開之月(又一說是來自美麗女神阿佛洛狄忒Aphrodite)、女神瑪雅(Maia)及女神朱諾(Juno),Quintilis至December是五月至十月,後來最後兩個月得名January(守護神雅努斯Janus)和February(源自古代淨化心靈及懺悔的節日)。約公元前八世紀與前二世紀之間,羅馬曆的起始月由March改為January。公元前45年的儒略曆改並沒有更改月序,但是為了紀念儒略‧凱撒(Julius Ceasar)和羅馬帝國開國君主奧古斯都‧凱撒(Augustus Ceasar),將其中兩個月份改用他們的名字:公元前44年Quintilis更名為July(儒略月)、前8年Sextilis更名為August(奧古斯都月),變成了今天的月名。

    雖然January第一日在羅馬曆很早就定為一年之始,但是某些歐洲國家雖然後來也採用儒略曆或格里曆,可能因各地傳統不同他們以前不一定取January首日為年首。例如某國家以前可能以March的第一日作為年首,另一國家以前或以March的第25日(接近春分日)為年首,又另一國以前或以December的第25日(接近冬至)為年首等。史學家有時會用雙重紀年紀日來記事,例如"10/20 February 1661/62"表示日期是February的第十日(儒略曆)或February的第二十日(格里曆),年份是1661年或1662年,視乎用何日為年首。這情況類似中國的分裂時代,各政權各自頒曆,因此年首和日期也不盡相同。所以用統一的紀年紀日對研究歷史很有用,本網站的公曆依慣例一律以January第一日為年首,月份的英文名一律用現在通行的月名,中文一律譯為1月、2月、3月……12月,為避免混淆,這裡的公曆月名用阿拉伯數字,中曆月名則用漢字。如前述,1582年10月15日起用格里曆,公元8年至1582年10月4日用儒略曆,8年前則用逆推儒略曆(proleptic Julian calendar)。

    據說很多華人以西方月名來譯農曆的月名,例如以June來譯農曆六月,使一些西方人士感到困惑,不知道是在說公曆的月份還是農曆的月份。這樣的譯法,就像用「正月」來譯公曆的January、「冬月」譯November、「臘月」譯December等,並不足取,所以本網站不採用這拙劣譯法。


南 明 及 明 鄭 (1645年 – 1683年)

南明及明鄭的曆日根據傅以禮《殘明大統曆》(收錄在《二十五史補编》中)的資料,但是永曆二十五年正月朔根據明鄭頒行的永曆二十五年大統曆訂正、永曆三十年曆書冬至日期根據明鄭頒行的永曆三十年大統曆訂正。在年曆網頁輸入1645年至1661年的年份便會有按鍵選擇南明的日曆、輸入1662年至1683年的年份便會有按鍵選擇明鄭的日曆。朔閏表網頁將明朝與南明及明鄭的朔閏表放在同一網頁,另有網頁載有清與南明及明鄭朔閏異同表

南明及明鄭的曆日有幾種不同版本,雖然都是根據明朝大統曆推算,但是可以肯定算法與明朝欽天監編算的大統曆算法稍有差異,而且不同版本有時也有差異。本網站將依明朝大統曆推算的結果與《殘明大統曆》曆日所有差異一一列出,其他有爭議的曆日也一一列出以供研究南明史學者參考,另有專文用曆算角度探討南明和明鄭曆法的朔閏


秦 至 漢 初 (前221年 – 前104年)

秦朝及漢初(公元前221年 – 前104年)的曆法沿用顓頊曆的月序。顓頊曆是古六曆之一,據說戰國後期在秦國使用。顓頊曆以建亥(即今天的十月)為年首,但仍稱建亥為十月。月的數序是十月、十一月、十二月、正月、二月……九月,閏月置於年終,稱為後九月。秦朝的曆法與顓頊曆稍有不同。漢朝建立後基本上沿用秦曆,一百年間只作了少許修改,直到漢武帝太初元年(公元前104年)才頒行新曆法,以建寅(正月)為年首,並把閏月置於無中氣的月份,這使公元前104年的農曆年有十五個農曆月。秦朝為了避秦始皇名諱(正、政同音),把正月改稱「端月」,到漢朝又改回正月。本網站沒有跟從歷史,在秦朝仍稱建寅為正月。

本網站這時期的復原日曆是根據李忠林在2012年發表的文章「秦至汉初(前246至前104)历法研究—以出土历简为中心」李忠林。具體計算方法在秦與漢初曆法網頁闡述。雖然復原曆法有效年限估計是秦王政元年(公元前246年)前到漢武帝太初元年(公元前104年)五月,本網站年曆網頁從公元-220年(即前221年)起才用復原曆法、朔閏表網頁則從N-220年(即秦始皇二十六年)起才用復原曆法(年曆網頁以公曆為主、朔閏表網頁則以農曆為主)。兩網頁都在漢武帝太初元年五月起改用《三千五百年历日天象》張培瑜97的數據註五。復原曆法的太初元年三月是小月、四月是大月、五月是小月。改了曆法後,五月朔提前了一天,使四月變成小月,而新曆法的五月又是小月,於是出現了三、四、五三個相連小月,這在平朔法則是不可能的,只有在改曆時才可能出現。如果在太初元年六月才改用太初曆,就會使五月只有二十八日,這在平時也是不可能出現的。


戰 國 時 代 (前480年 – 前222年)

戰國時代各國施行不同曆法,當時使用的曆法有六種:周曆、魯曆、殷曆、夏曆、黃帝曆和顓頊曆,合稱「古六曆」。六種曆法的計算方法大致相同,但各曆的年首不盡相同,用以計算曆法的曆元也不同。本網站在戰國時代列出所有六部古六曆,根據《中国古代历法》張陳薄胡書中第三章第六節所述的資料復原。具體計算方法在古六曆網頁敘述。

夏曆有兩個版本,差別是計算曆法時使用的曆元不同。本網站的夏曆在春秋時代和戰國時代所用的版本不同,春秋時期用的夏曆曆元是雨水合朔齊同,戰國時的夏曆曆元是冬至合朔齊同。

目前學界對於古六曆的閏月位置未有一致意見。本網站假設閏月置於年終,稱為閏月,不用註明閏幾月。有些學者認為當時以無中氣的月份為閏月,所以也註明無中氣的月份以供參考。顓頊曆較為特殊,以孟冬十月為年首,月序是十月、十一月、十二月、正月、二月……九月,閏月置於年終,稱為後九月。

雖然干支紀年可能到東漢才流行,本網站的中曆都載有干支紀年,年曆網頁朔閏表網頁在1912年前還附加帝王年號。在戰國時代,周曆附加東周君王的紀年,周朝於周赧王五十九年(公元前256年)被秦國所滅,東周君王的紀年也到這一年為止。魯曆附加魯國君主的紀年,魯國於魯頃公二十四年(公元前249年)被楚國所滅,魯國君主的紀年也到這一年為止。顓頊曆大約在秦昭襄王時期(公元前306 – 前251)開始在秦國使用,顓頊曆自公元前306起附加秦國君主紀年。

古六曆在戰國時期創制行用,但是當時的曆法已經散失,今天我們只能從漢朝及以後的書藉得知古六曆的資料。這些「漢傳古六曆」與戰國時實際使用的古六曆差異有多大仍未可知。


春 秋 時 代 (前722年 – 前481年)

春秋時期各國施行不同曆法,現在我們只能從《春秋》這部由孔子修訂的魯國編年史書中獲得當時魯國施行曆法的不完整資料。這裡稱當時魯國的曆法為春秋曆,本網站的春秋曆是根據《中国古代历法》張陳薄胡書中第三章第五節的資料復原。具體計算方法在春秋曆網頁闡述。

春秋曆沒有固定的置閏法則,正月的月建並不固定,而是在建亥(即現在的十月)與建寅(現在的正月)之間擺動。春秋初期的正月月建多在建丑(現在的十二月),末期則多在建子(現在的十一月)。目前學界對於春秋曆的閏月的位置末有一致意見。本網站假設閏月置於年終,稱為閏月,不用註明閏幾月。春秋曆沒有計算冬至(或其他節氣)的方法,當時的冬至是靠觀測而定,所以沒有曆書節氣。由於春秋曆在魯國使用,年曆網頁朔閏表網頁中附加魯國的君主紀年。

除了春秋曆外,本網站還提供周曆、殷曆和夏曆(其中三部古六曆)的資料。一般認為這三部曆法應在春秋末期或戰國時代才建立,把這三部曆法在春秋時期列出僅供參考而已。如上一節所述,夏曆有兩個版本,本網站在春秋時期用的夏曆曆元是雨水合朔齊同。



備 註 和 參 考 文 獻