後漢四分曆:三國時代的時間是怎麼算出來的
西元 208 年冬天,赤壁的火還沒點起來,曹操軍中的書吏已經在竹簡上寫下日期——用的是一部把一年定為「365 又 4 分之 1 天」的曆法。這個看似粗糙的分數,撐起了東漢與蜀漢近一百八十年的官方時間,也留下足夠精確的紀錄,讓我們今天能拿 NASA 的日食目錄逐筆對帳。這篇文章拆開後漢四分曆的數學齒輪,並說明本站計算器如何實作與驗證它。
「四分」在分什麼:兩個數字決定一整部曆法
一部陰陽合曆必須同時回答兩個問題:太陽年多長(決定季節與節氣)、朔望月多長(決定月份與初一)。後漢四分曆的答案分別是:歲實 365 又 4 分之 1 日、朔策 29 又 940 分之 499 日。曆名「四分」就來自那個四分之一——每年比 365 天多出四分之一天,冬至時刻因此每年在一天之內往後滑四分之一,四年一輪迴,重新回到夜半。
更漂亮的是,這兩個數字並不是各自獨立挑的。四分曆繼承了「十九年七閏」的鎖定關係:19 個太陽年恰好排 235 個朔望月。19 乘 365.25 等於 6939.75 日,除以 235 個月,每月正好 29 又 940 分之 499 日。分母 940 看起來古怪,其實就是 235 乘 4——朔策是被歲實和十九年七閏「逼」出來的。整部曆法真正的自由參數只有一個:那個四分之一。
拿現代值對帳:回歸年實際約 365.2422 日,四分曆每年多算約 11 分鐘,128 年就會累積出一整天,冬至日期緩緩後漂;朔望月實際約 29.530589 日,四分曆的 29.530851 每月只差約 23 秒,三百多年才差出一天。換句話說,它的月亮相當準,太陽卻在慢性失準——這個瑕疵最終送走了它,我們稍後會講到。
為什麼西元 85 年要改曆:太初曆欠下的債
四分曆的前任,是漢武帝太初元年(西元前 104 年)頒行的太初曆。太初曆把朔望月定為 29 又 81 分之 43 日,號稱「八十一分法」——81 是黃鐘律數,數字取得漂亮,帶點音律神秘主義,但這個朔策比四分曆的更長,誤差累積更快。到了東漢初年,朝廷的日曆已經肉眼可見地落後天象:天上的新月比曆書上的朔日提早出現,史官甚至在「晦日」(當月最後一天)看到日食——日食只可能發生在真正的合朔,這等於天空當眾打臉官方曆書。
漢章帝元和二年(西元 85 年)下詔改曆,由編訢、李梵等曆官主持。有趣的是,這次改革不是發明新方法,而是「復古」:四分法其實比太初曆更古老,先秦流傳的古六曆全是四分術;東漢做的事,是把曆元重新校準到與當下天象相符的位置,再換回數學上更乾淨的四分之一。幾年後賈逵主持論曆,紀錄裡留下一句超前時代的觀察——「月行當有遲疾」,月亮走得時快時慢。可惜四分曆沒把這件事納入計算,伏筆就此埋下。
此後四分曆作為東漢官方曆法用了一百三十餘年;漢亡之後,又在蜀漢多活了四十多年,前後合計將近一百八十年。
曆法的齒輪箱:章、蔀、紀、元,與自動湧現的十九年七閏
四分曆的內部像一組咬合的齒輪,每一級都在解決「除不盡」的問題。19 年等於 235 月,年與月對齊了,但 6939.75 日不是整數;乘以 4,得到 76 年 = 27,759 日 = 940 月,日、月、年三者同時對齊,這一級叫「蔀」——每過 76 年,朔與冬至會重新回到同一個夜半。但 27,759 除以 60 餘 39,日干支還沒歸位;再乘 20,1520 年為一「紀」,甲子日歸位;再乘 3,4560 年為一「元」,連年干支也歸位。整部曆法,就是一座 4560 年才走完一圈的大鐘。
齒輪需要一個起點。《後漢書·律曆志》把曆元定在漢文帝後元三年的「十一月甲子夜半朔旦冬至」——那一刻,合朔、冬至、夜半、甲子日四者理論上完美重合。換算成儒略曆,這一天落在西元前 162 年 12 月 25 日(漢初以十月為歲首,十一月排在年頭,所以跨進了前一個西元年)。之後的任何一天,原則上都只是「距曆元第幾日」的整數運算。
閏月呢?一年有十二個「中氣」(冬至、大寒、雨水……每隔一個節氣取一個),規則只有一條:哪個月分不到中氣,哪個月就是閏月。因為 19 年裡只有 19 乘 12 共 228 個中氣,卻要排 235 個月,必然有 7 個月分不到——十九年七閏不是誰規定的,是算術自己長出來的。這種「規則極簡、結果湧現」的設計,正是漢代曆算最優雅的地方。把齒輪攤開來看:
- 章 = 19 年 = 235 月:年與月對齊,7 個閏月藏在其中
- 蔀 = 4 章 = 76 年 = 27,759 日 = 940 月:日數化為整數,朔旦冬至重回夜半
- 紀 = 20 蔀 = 1,520 年:日干支歸位,重回甲子日
- 元 = 3 紀 = 4,560 年:年干支也歸位,全曆歸零重啟
三國,三本日曆:魏、吳、蜀各過各的日子
漢獻帝的時代,從袁紹、曹操到劉備,天下用的還是同一部四分曆。三國鼎立後開始分家:曹魏起初沿用,景初元年(237 年)改行楊偉的景初曆,還一度把歲首搬到建丑之月——相當於把過年提前一個月,折騰了三年又改回來;孫吳黃武二年(223 年)改用劉洪的乾象曆,那是中國第一部把「月行遲疾」算進去的曆法;蜀漢則一動不動,把後漢四分曆用到 263 年亡國為止。
實際後果是:同一個物理上的日子,在洛陽、建業、成都的官方文書上可能寫成不同的日期——朔日差一天是常態,閏月擺放不同時甚至會差出一個月。讀《三國志》對勘魏、吳、蜀三方紀事時,史家至今得小心處理這件事。
蜀漢為什麼不改曆?史書沒有明說。最常見的解讀是正統宣示:蜀漢自居漢室延續,「漢賊不兩立」,沿用漢家正朔本身就是政治表態——但請注意,這是後人的合理推斷,不是史料明文,我們把它標記為推測而非事實。
平朔制與「晦日食」:寫進史書的誤差化石
四分曆採「平朔」:月份用平均月長 29 又 940 分之 499 日機械地排下去,大月 30 天、小月 29 天交錯,由餘數累積決定。但真實的月亮軌道是橢圓,走得時快時慢,真正的合朔時刻可以偏離平均值十幾個小時——於是曆書上的初一,可能比天上的真朔早一天,或晚一天。
這個誤差在史書裡留下了化石。日食只可能發生在真朔,但《後漢書》五行志裡多次出現「晦,日有食之」——月底最後一天發生日食,意思就是:真正的合朔比曆書早到了一天。這些「錯位」的紀錄反而珍貴:它們證明東漢史官忠實記下了看到的天象,而不是回頭改紀錄去遷就曆書;也讓兩千年後的我們,得以精確量測當年曆法的誤差。
解決之道要等劉洪的乾象曆首開「遲疾曆」修正月速,而中國曆法全面改用「定朔」——直接計算真實合朔——已經是唐代的事。四分曆站在這條演化鏈的「平朔」一端,那一天的偏差是它的時代印記,不是計算錯誤。
誠實時間:哪些地方不確定、學界還在討論
寫到這裡的內容都是有把握的部分。以下這些,是我們認為應該攤開講清楚的不確定之處:
- 曆元是回推出來的理想點:西元前 162 年那個「甲子夜半朔旦冬至」是算術上的完美時刻,真實天象並沒有精準四合一——當晚的真朔與真冬至各偏了若干時辰。曆元的功能是計算錨點,不是天文觀測紀錄。
- 置閏規則的表述:漢代曆官實務上用「閏餘」(餘數累積)推閏月,這與「無中氣置閏」在平氣平朔之下數學上幾乎等價,但個別邊界月份是否曾有人為調整,學界仍有討論。
- 改曆前後的細節:元和改曆的過渡安排,以及讖緯之學(例如「甲寅元」之爭)在曆法論爭中扮演的角色,史料殘缺,只能部分重建。
- 史書本身會出錯:五行志的日食紀錄有少數干支或月份訛誤,對照現代天文回推可以揪出來;各家朔閏對照表(如陳垣《二十史朔閏表》、張培瑜《三千五百年曆日天象》)在少數月份的大小月與閏月位置上也互有出入。
我們的計算器怎麼實作、怎麼驗證這部曆法
本站的四分曆計算器完全用整數分數運算,不碰浮點數:歲實 365+1/4、朔策 29+499/940、蔀 = 76 年 = 27,759 日 = 940 月,全部按《後漢書·律曆志》的原始常數實作;錨點取律曆志的曆元「文帝後元三年十一月甲子夜半朔旦冬至」,對應儒略日數(JDN)1662611。任何日期換算,本質上都是「距曆元幾日」的整數加減與 mod 運算——順帶一提,1662611 套用標準干支公式(加 49 除以 60)餘數正好是 0,即甲子日:古書記載與現代儒略日系統在這個節點上嚴絲合縫。
閏月不是硬編的。計算器只實作「無中氣置閏」這一條規則,把平朔月序與平氣節氣各自鋪開、逐月檢查,十九年七閏的節奏是從算術裡自然湧現的。這同時是一道結構性自檢:只要任何一個分數抄錯,閏月分布就會立刻漂移走樣。
驗證對象是天空本身。我們從《後漢書》五行志取十五筆日食紀錄——日食必然發生在真朔——逐筆與 NASA 日食目錄比對,要求月份、日序(朔或晦)、日干支三者同時吻合,結果 15 筆全數通過(15/15)。同時我們如實保留平朔制的固有特性:計算器給出的朔日可能與真實月相差一天,史書上的「晦日食」正是這個誤差的化石。我們重建的是三國時代的人實際使用的那部曆,而不是用現代天文學「修正」過的版本。
在《無盡小說引擎》的三國劇本裡,遊戲內的年月日與干支就由這套通過驗證的四分曆引擎給出——你在遊戲裡看到的成都日期,和姜維案頭公文上的日期,是同一套算法。
相關頁面
- 古代曆法計算器(互動工具)
- 古代曆法完全指南(總覽)
- 農民曆原理與換算全解:陰陽合曆、置閏規則與2033閏十一月
- 宣明曆與日本和曆:用了823年的唐朝曆法|原理、歷史與西曆換算
- 乾象曆與景初曆:三國正朔之爭與換算原理|古代曆法計算器
- 儒略曆與羅馬紀日:Kalends、Nones、Ides 原理與換算|古代曆法計算器
- 羅馬共和曆是什麼?祭司政治置閏與凱撒445天亂年全解說
- 伊斯蘭曆換算原理:30年11閏的表格曆解說與西元對照計算器
- 希伯來曆原理與換算全解:完全演算法化的陰陽合曆
- 馬雅曆解說:長紀曆、卓爾金曆、哈布曆原理與西元換算
- 埃及曆與科普特曆換算指南:一年永遠 365 天、活了四千年的曆法
- 印度古曆換算指南:Kali Yuga 紀元、均值曆原理與閏月規則
- 干支與黃曆怎麼算?六十甲子換算原理與三千年紀日史全解析
常見問題
四分曆(漢曆)日期怎麼換算成西元日期?
原理分三步:先用年號紀年定位「距曆元第幾年」,再用歲實與朔策的整數分數算出該年各月朔日的儒略日數,最後把儒略日數轉成西元(儒略曆)日期與干支。手算相當繁瑣,本站計算器已把整條換算鏈自動化,輸入年號年月日(或干支)即可得到對應西元日期,反向查詢也可以。要注意朔日與真實月相可能有一天的固有偏差,這是平朔制的特性,不是換算錯誤。
建安十三年是西元幾年?其他三國年號怎麼對照?
建安十三年大致對應西元 208 年,也就是赤壁之戰那年。說「大致」是因為漢曆年首落在西曆 1 至 2 月之間,年底的十二月往往已跨進下一個西元年,嚴格換算要精確到日而不是年。常用錨點:中平元年=184、初平元年=190、建安元年=196、蜀漢章武元年=221、炎興元年(蜀漢亡)=263。個別日期用計算器換算最保險。
為什麼叫「四分曆」?和先秦古六曆的四分法一樣嗎?
名稱來自歲實 365 又 4 分之 1 日——一年比 365 天多出「四分之一」天。方法上它與先秦古六曆同屬四分術家族,關鍵差別在曆元:後漢四分曆把起算點重新校準到與東漢實際天象相符的位置(《後漢書》所載文帝後元三年朔旦冬至),所以推出來的朔日與閏月和古六曆並不相同。
後漢四分曆跟現在的農曆(農民曆)一樣嗎?可以直接套用嗎?
同家族、不同世代,不能直接套用。兩者都是陰陽合曆、都用無中氣置閏,但現行農曆(時憲曆系統)採「定氣、定朔」,按真實天文時刻定節氣與初一;四分曆採「平氣、平朔」,按平均值機械推排。同一個西元日期,兩套曆的月份、日序、閏月位置都可能不同,查三國時代的日期必須用四分曆本身來換算。
三國時代魏、蜀、吳用的是同一部曆法嗎?
不是。曹魏 237 年起改用景初曆,孫吳 223 年起用乾象曆,只有蜀漢把後漢四分曆一路用到 263 年亡國。所以同一天在三國的官方文書上可能寫成不同日期,朔日差一天很常見。本站計算器實作的是後漢四分曆——東漢全境與蜀漢的官方曆,也是漢末群雄(包括赤壁前後)通用的那一部。