中國古代歷法是一門很專門的學問,是古天文學的一個分支,內容十分豐富,涉及到天文、數學、物理等各個科學領域。學習中國古代文史的人,只學一點中國古代歷法與文史有關的內容就可以了,不可能也無必要搞得很深。
(1)年、歲和歲實
在中國古代歷法和古代史書中,年和歲有不同的意思。年相當於我們今天的陰歷年,一年12或13個月,354或384日。歲相當於今天的陽歷年,一年12個月,365或366日。《尚書·堯典》說:“期三百有六旬有六日。”司馬遷在《史記·五帝本紀》中改作“歲三百六十六日”,說明期就是一歲。年和歲都是歷法術語,是時間的計算單位,是用整日、整月進位的,不等於回歸年的長度。回歸年的長度,在古代歷法中叫“歲實”。不過由於測量技術的落後,當時各種歷法所定的“歲實”都大於回歸年的實際長度。歷法一年或一歲都必須用整日、整月計算,使用時才方便,這就不可能同回歸年的日數完全相符,所以歷法只要求若干歷法年的平均日數同回歸年接近就行了。
(2)置閏法
前面說過,中國古代的歷法和今天的農歷,都屬於陰陽合歷系統,即調合陰、陽歷矛盾的歷法。太陽、地球、月亮的運轉周期本來就不能配合,陰陽合歷又如何去調合呢?然而我國古代歷法用十分巧妙的方法把二者調和得非常協調,這個方法就是置閏法。《尚書·堯典》說明:“以閏月定四時成歲”,《左傳》文公六年說:“閏以正時”,就是說的置閏法。
中國古代歷法的月,同朔望月基本符合,兩個月一大一小共59日,這一點與陰歷完全相同。但如果完全按照陰歷安排一年12個月,354日,歷法月雖然同朔望月基本符合,可是一年比回歸年卻少了11日多,三年就少了一個月多,過十六七年就會在三伏天裡過新年,歷法年同地球繞太陽公轉的規律就亂套了。為了既使歷法月同朔望月符合,又使歷法年同回歸年符合,就用置閏的方法來補足這每年11日多的差額。閏者多余也,就是到一定時候增加一個多余的月,不致使歷法年同回歸年完全脫節。置閏的方法,是逐步完善的。起初,例如商周時期,似乎只知道三年一閏,到戰國時就已經知道十九年七閏的閏周了。19年7閏,共235個朔望月。按中國古代大多數歷法采用的“四分歷”的歲實和朔策(朔望月的長度),19回歸年同235朔望月是相等的,它們的關系是:
19×365.25=235×499/940=6939.7529
也就是說,陽歷的19年等於陰歷的19年,陰陽歷就完全調和起來了。
19回歸年同235朔望月的日數完全相等,那就說明,任何節氣,經過19年又必然回到同一天去。假如今年正月朔日朔旦立春,過19年後也一定是正月朔日立春,只是合朔和交節的時刻相差了0.25日,必須經過4個19年(76年),合朔和交節的時刻才能又回到原來的一點(朔旦)上。因此中國古代歷法把19年叫做一章,4章76年叫做節。
十九年七閏的閏周,同今天測用現代儀器實例的長度也基本符合。如19回歸年總長6939.6018日,235朔望月總長6939.6879日,二者相差2小時4分16.3秒了。
閏月放在一年中的什麼時候?西漢中葉以前都放在年末,如殷周叫“十三月”,秦和西漢初叫“後九月”。從漢武帝施用太初歷開始,就規定閏無中氣之月。此法一直沿用到今天。
十九年七閏法是我國古代歷法的主要特點之一。
(3)分至和氣
分至就是二分二至,即冬至、春分、夏至、秋分,以此將一回歸年的長度劃為四等分。這也是我國古代歷法的主要特點和關鍵內容,屬於陽歷系統。一年之中分至定氣准了,歷法就比較准確了,而分至中的關鍵又在於定冬至點。定冬至點的辦法比較復雜,要進行天文學上的測試,不是三言兩語說得清楚的。在我國古代,定冬至點的辦法也有一個發展過程。起初,人們大概是以冬天日影最長的一點為冬至點,到我國戰國時天文學發展了,就改用日月相會於某一星座為冬至點了。冬至點是一回歸年的起點,地球繞太陽一周再回到冬至點的長度,就是一回歸年。這個長度的中分處就是夏至點,二分則在二至的中點,一定是晝夜平分的那一天。
氣是包括分至在內在二十四個歷法術語,用它們把一回歸年劃為二十四等分。下面是二十四氣表:
22冬至 23小寒 24大寒 1立春
2雨水 3驚蟄 4春分 5清明
6谷雨 7立夏 8小滿 9芒種
10夏至 11小暑 12大暑 13立秋
14處暑 15白露 16秋分 17寒露
18霜降 19立冬 20小雪 21大雪
這些名稱表示了一歲之中我國黃河流域氣候、農事與自然現像的變化,如驚蟄意味蛇蟲冬眠已醒,芒種說明種子破胎而出,霜降表示開始打霜等等。一回歸年分為二十四氣,兩氣間的長度為十五日多。氣是陽歷,同地球繞太陽公轉一致,每年所在的位置是不變的。二十四氣又分為節氣、中氣兩類,以上凡奇數者為節氣,偶數者為中氣。今天人們習慣上把中氣也稱為節氣,叫二十四節氣。氣的安排也是逐步完備的。春秋時大概還只知道安排二分二至,戰國時則增加了四立:立春、立夏、立秋、立冬,到西漢時二十四節氣變很完整了,這見於《淮南子·天文訓》。
(4)四時
我國古代歷法把一歷法年分為四時,現在叫四季,每季三個月,有閏之季四個月。正二、三月為春,四、五、六月為夏,七、八、九月為秋,十、十一、十二月為冬。每時三個月又可稱為孟、仲、季月,這樣每個月都可以用時名叫出,如孟春是正月,仲夏是五月,季秋是九月等。時是跟歷法月走的,同天體運轉規律沒有直接關系。我國古代史書中凡提到月份時總是冠以時名,所以讀古書時必須了解這一點。
(5)干支和太歲
學習古代歷法和閱讀古代史書,時刻同干支打交道。什麼是干支?是十天幹和十二地枝的簡稱、簡寫。這是二十二個中國特有的符號,開始用於人名,後來主要用在歷法上。十干是甲、乙、丙、盯戊、己、庚、辛、壬、癸,十二支是子、醜、寅、卯、辰、巳、午、未、申、酉、戌、亥。十干十二支相互交錯組合,成為六十個復合符號,就是我們今天說的六十花甲或六十甲子。
60甲子表如下:
1甲子 2乙醜 3丙寅 4丁卯 5戊辰
6己巳 7庚午 8辛未 9壬申 10癸酉
11甲戌 12乙亥 13丙子 14丁醜 15戊寅
16己卯 17庚辰 18辛巳 19壬午 20癸酉
21甲申 22乙酉 23丙戌 24丁亥 25戊子
26己醜 27庚寅 28辛卯 29壬辰 30癸巳
31甲午 32乙未 33丙申 34丁酉 35戊戌
36己亥 37庚子 38辛醜 39壬寅 40癸卯
41甲辰 42乙巳 43丙午 44丁未 45戊申
46己酉 47庚戌 48辛亥 49壬子 50癸酉
51甲寅 52乙卯 53丙辰 54丁巳 55戊午
56己未 57庚申 58辛酉 59壬戌 60癸亥
要學點古代歷法知識,十干十二支和六十甲子的口訣,應當按順序背誦下來。因為古代歷法的年、月、日,都是按六十甲子表周而復始地排下來的。古代史籍的紀年,序數與干支並用,如明嘉靖三十三年,又可以只稱嘉靖甲寅;而紀日就只用干支,稱某月甲子,某月戊午,或某月某日甲子,某月某日戊午,決不單叫某月幾日。干支口訣不熟,學習古代歷法就寸步難行。
歲星紀年和太歲紀年也是學習中國古代文史的人必須知道的。因為在閱讀古代史書時會經常碰到它們。歲星紀年是從歲星(木星)的運行周期演化而來的。歲星繞太陽公轉一周約十二年(實際是11.86年),因此古人把歲星運行的軌道黃道附近劃分為十二次,又叫黃道十二宮(木星的行宮),各取一個名稱。自左至右十二次的名稱是:
星紀 玄枵 諏訾 降婁
大梁 實沈 鶉首 鶉火
鶉尾 壽星 大火 析木
木星每運行一次,大約相當於地球公轉一周,以這些星次的名稱來紀年,就是歲星紀年。如前而說到的“歲在星紀”是說醜年,“歲在降婁”是說戌年。
鑒於歲星運行方向同地球正相反,歲星紀年就用起來很不方便,於是人們把歲星運行的軌道自右至左劃分為十二等分,叫十二辰,與十二支相應,亦各取一個名稱。十二辰是:
攝提格 (寅) 單 閼(卯) 執 徐(辰) 大荒落(巳)
敦 牂 (午) 協 恰(未) 涒 灘(申) 作 噩(酉)
淹 茂 (戌) 大淵獻(亥) 困 敦(子) 赤奮若(醜)
由於歲星並不是按十二辰的方向運行的,人們就設想有一個假歲星在十二辰的軌道上運行,每運行一辰就是一年,這個假歲星就叫“太歲”,用十二辰紀年,就叫太歲紀年。前面舉到的《資冶通鑒》第一卷說“起著雍攝提格,盡玄黓困敦”,是說起於戊寅年,止於壬子年。
十二辰又稱歲陰、相當於十二支。為了同歲陰相配合,人們又制造了十歲陽,相當於十干。歲陽是:
閼逢(甲) 旃蒙(乙) 柔兆(丙) 強圉(丁) 著雍(戊)
屠維(己) 上章(庚) 重光(辛) 玄黓(壬) 昭陽(癸)
這樣,歲陰歲陽交錯組合,就成了六十甲子的別名,如閼逢攝提格就是甲寅,昭陽作噩就是癸酉。歲陰、歲陽這些怪僻的名詞是些什麼意思,漢代的高誘、李巡就已經不甚了然了,初學歷法也不必都記下來,碰到時查查對照表就行了。
(6)月建
月建是人們把陰歷的十二個月同上面說的黃道附近的十二辰聯系起來而規定出來的。月建有夏、殷、周歷的不同。按夏歷,將北鬥星的鬥柄指向寅的叫正月,卯叫二月,……,醜叫十二月,就稱正月建寅,二月建卯。殷歷正月建醜,周歷正月建子,以下各月依次類推。這就是月建。古代歷法把正月建寅之歷稱為人正歷(包括秦漢以後的各種歷法和今天的農歷),建醜之歷為地正歷,建子之歷為天正歷。月建不同的歷法,具體月份的時間是不一樣的。如建寅歷的七月,在伏天的末尾,立秋、處暑之間,而建子歷的七月,則還是百花盛開的初夏。《詩經》的《七月》篇說:“七月流火,九月授衣。”有人根據它是周詩而定此七月的建子的周歷。可是周歷七月,正當初夏,“火”(指大火,即心宿)處於正南方位置最高的地方,並沒有“流”,九月以後才逐漸偏西向下降行,“七月流火”說不過去。如果說《七月》是建寅的夏歷,則同天像符合起來了。所以讀先秦古籍,遇到月份,必須先弄清月建,才能確定具體時間。
(7)歷元
歷元是一部歷法推算、排列歷表的起點。歷法學家們往往要在歷史上找到一個理想的時間,作為自己的歷法的推算起點,然後依次往後排列年、月、日、時。我國古代的各種歷法都以冬至為一歲之始,朔旦為一月之始,夜半為一日之始,所以,最理想的歷元,是一年冬至的年、月、日、時都適逢甲子,至少也要求都逢“子”,從歷元開始,年、月、日、時都按六十甲子表順推,周而復始,循環往復,以至無窮,而又與天體運行吻合。但一年冬至的年、月、日、時都逢“子”的機會很少,都逢甲子的機會更是千年難遇,因此許多歷法往往把歷元定在幾千幾萬年以前,例如顓頊歷從歷元到唐元二年已積年2761019年。
(8)歲差和贏縮
古人沒有現代儀器,太陽、地球、月亮運行的周期完全靠目測,近代術語叫做太陽視運動。比如目測歲實的最簡便的方法是以冬天日影最長的一點為起點,經過一個周期再回到這一點的長度,就是目測的歲實,又可叫做太陽年。太陽年不等於加歸年。因為地球沿著軌道運動時,受到太陽和月亮引力的影響,地軸以每年約50 角秒的速度向西移動,從今天的冬至點到明年的冬至點,太陽並沒有回到原來的地方,而是西退了約50.2”。這種現像叫做“歲差”。這是我國東晉時天文學家虞喜首先發現的。當人們發現歲差後,就知道了太陽視運動在變化之中,應當求出太陽年的平均長度,這才產生了回歸年這個天文數據;同時也就懂得了為什麼古代天文學家們測量的歲實老是一致不起來,不同時代的古書記載的恆星位置為什麼不同等等。這對讀懂古書很有幫助。
地球繞太陽公轉一周的平均長度雖是365.242199日,但它冬夏運行的速度並不一樣,冬天轉得快些,夏天轉得慢些。例如現代儀器測驗證明,公歷9月16日正午到17日正午只有23時59分39秒,而12月23日正午到24日正午,卻有24時0分30秒,快慢的相差達51秒。這種現像叫“贏縮”,快的時候叫贏,慢的時候叫縮。我國在戰國時就已經發現了贏縮現像,北齊時天文學家張子信在海島上一日不懈地觀測了三十余年,確鑿無誤地加以證實。由於發現了贏縮規律,人們在制定歷法,安排分至和其他20個節氣時,就知道了不應以地球公轉的時間長度來等分,而應以地球公轉軌道的周長來等分,這就使歷法愈來愈科學了。
(9)朔望幾弦晦和時辰
據古代歷法,一月之中有幾日分別叫做朔、上弦、望、下弦、晦。這是根據太陽、地球、月亮運行的不同角度而定的。初一日叫“朔”,取日月合朔後的第一日之義,即月亮居中三個天體成180°;十五或十六日叫“望”,《釋名·釋天》說:“日在東,月在西,遙相望”,則是地球居中成180°;初七或初八日為上弦,二十二或二十三日為下弦,是三個天體按不同的方向成90°;三十或二十九日為晦,一個月的最後一天,取義於月光隱去。因此,日食必發生在朔日,月食必發生在望夜,否則就是歷法不准了。
周以前的文獻和金文中,往往以朔、望、上下弦把一個月分成四段:從朔到上弦叫“初吉”,從上弦到望叫“既生魄”(魄有時寫為霸),從望到下弦叫“既望”,從下弦到晦叫“既死魄”。漢以後這種分法不用了,但學習中國古代史者亦應當了解。
古人把一日分為十二時,與一年的四時名同實異,每時相當於今二小時。時以十二支命名,故又稱時辰。從夜半起到次日夜半止。依次稱為子時、醜時,……,亥時。子時大約相當於今23點到1點,亥時相當21點到23點。另外,一日又可以分為100刻,每刻15分,每分60秒。這裡的刻、分、秒比今天公歷的刻、分、秒都稍小,不能混同。時刻分秒劃分及其長短,都是人們為了計算時間的方便而規定的,同天體運行沒有關系。