古代漢語常識 · 中國古代的曆法
古代的曆法,起於商代以前,後來逐步改進。經過天文學家祖沖之、僧一行、郭守敬等人的研究,到了清代,中國的曆法已經到了完善的地步。這裡簡單地介紹中國古代的曆法。由於曆法和天文有密切關係,同時我們也講一些中國古代天文學的常識。
一、年歲
年和歲是不同的兩個概念。①
十二個月為一年。閏年有十三個月。平年有354日(包括六個大月,六個小月) ,閏年有383日。
太陽一周天為一歲。所謂太陽一周天,實際上就是太陽過春分點,循黃道東行,復回到春分點的時間。古人所謂歲,也就是現代天文學所謂回歸年,又叫太陽年。這樣,一歲就是365日(實際上是365.24199日) 。《尚書·堯典》上說:「期三百有六旬有六日。」「期」是一周歲的意思,三百有六旬有六日(366日) 是說一個整數。這實際上是陽曆的年,中國曆法上叫作「歲實」。
年是陰曆,歲是陽曆。所以說中國古代曆法是陰陽合曆。中國的節氣是陽曆(參看下文) 。中國的閏月是用來解決陰陽曆的矛盾的(見下文) 。
歲的意義來源於歲星,歲星就是木星。歲星約十二年一周天。古人把黃道附近一周天由西向東分為十二個星次,歲星每年行一個星次。十二次的名稱是星紀、玄枵、諏訾、降婁、大梁、實沈、鶉首、鶉火、鶉尾、壽星、大火、析木。《左傳·襄公二十八年》有「歲在星紀」,《三十年》有「歲在降婁」。《周語·晉語四》有「歲在大火」,都是以歲星紀年,這是最早的紀年法。後人寫文章,為了仿古,也採用這種紀年法,例如潘岳《西征賦》有「歲次玄枵」。
較後的有太歲紀年法。古人把黃道附近由東向西分為十二等分,叫作十二辰,即子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥,其順序與十二次正相反。這個順序在應用上並不方便,於是古人設想了一個假歲星,叫作「太歲」,讓它由西向東,仍用子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥十二辰,於是從寅開始,有寅在析木(歲在星紀) 、卯在大火(歲在玄枵) ,等等。又為十二辰造了一些別名。即攝提格(寅) 、單閼(卯) 、執徐(辰) 、大荒落(巳) 、敦牂(午) 、協洽(未) 、涒灘(申) 、作噩(酉) 、閹茂(戌) 、大淵獻(亥) 、困敦(子) 、赤奮若(丑) 。屈原《離騷》:「攝提貞於孟陬兮,惟庚寅吾以降。」這是說,屈原生於寅年寅月寅日。②
據《爾雅》所載。攝提格等十二辰叫歲陰。另有紀年的十干叫歲陽。歲陽的名稱是閼逢(甲) 、旃蒙(乙) 、柔兆(丙) 、強圉(丁) 、著雍(戊) 、屠維(己) 、上章(庚) 、重光(辛) 、玄黓(壬) 、昭陽(癸) 。甲子紀年起於東漢,較早的紀年法是以歲陽和歲陰相配。《史記·曆書》有「焉逢攝提格太初元年(甲寅) 、端蒙單閼二年(乙卯) 、游兆執徐三年(丙辰) 、強梧大荒落四年(丁巳) 」③ ,等等。後人仿古,也有採用太歲紀年法的,例如司馬光的《資治通鑑》。
木星繞天一周,實際上不是十二年,而是11.86年。所以每隔八十二年就會有一個星次的誤差,叫作「超辰」或「超次」(漢代劉歆已經發現了超辰。但他說一百四十四年超一辰) 。由於超辰的關係,漢以後的歲星紀年法漸漸與實際情況不合,誤差越來越大,所以司馬光《資治通鑑》的歲星紀年,實際上只等於甲子紀年。
二、月
月球運行到太陽和地球之間,跟太陽同時出沒,古人認為是日月相會,叫作䢈(也寫作辰) ,也叫作合朔。月球自合朔繞地球一周再回到合朔,所走的時間是29499 /940 日(實際上是 29.53059日) ,叫作一個月。這個數目不夠30日,又多於29日,所以陰曆有月大月小。月大30日,月小29日,大月和小月相抵,也就差不多了。還差一點,所以有時候接連兩個月都是大月。
古人有所謂月建,把一年十二個月和天上的十二辰聯繫起來。依夏曆,斗柄(北斗的柄) 指寅叫作正月(一月) ,斗柄指卯叫作二月,辰是三月,巳是四月,午是五月,未是六月,申是七月,酉是八月,戌是九月,亥是十月,子是十一月,丑是十二月。但是,依殷歷,則丑是正月,依周曆,則子是正月。三代的曆法不同。《詩經·豳風·七月》是夏曆和周曆並用,所謂「四月」「七月」等,指的是夏曆,所謂「一之日(一月) 」「二之日(二月) 」等,指的是周曆。從漢武帝太初元年(前104) 直到清代末年,我國一直沿用夏曆,以建寅之月為歲首。今天所謂舊曆,也指夏曆。
三、晦,朔,望,朏(fěi) ,弦
每月的最後一日叫作晦,最初一日叫作朔。朔就是日月合朔的日子。古人很重視朔,因為朔的日子定錯了,時序就亂了。天子告朔於諸侯,諸侯告朔於廟。史官紀事,遇事件發生在朔日,必須寫明。《尚書·舜典》:「十有一月朔巡守。」《詩經·小雅·十月之交》:「十月之交,朔日辛卯,日有食之。」《左傳·僖公五年》:「春王正月辛亥朔,日南至,公既視朔,遂登東台以望。」後代史書紀事,都沿用此法。
古代以干支紀日,史書上不記月之第幾日,而記干支,所以我們必須查明該月朔日的干支,然後順推知道是月之第幾日。可查杜預《春秋長曆》和陳垣《二十二史朔閏表》。
每月十五日(有時是十六日,偶或是十七日) 叫作望。這時地球運行到月亮和太陽的中間。由於太陽和月亮此升彼落,一東一西,遙遙相望,所以叫作望。《釋名·釋天》:「望,月滿之名也。月大十六日,小十五日,日在東,月在西,遙相望。」後人以十五日為望,十六日為既望。蘇軾《赤壁賦》:「壬戌之秋,七月既望④ ,蘇子與客泛舟,游於赤壁之下。」《後赤壁賦》:「是歲十月之望,步自雪堂,將歸於臨皋。」
每月初三叫作朏,《說文》:「朏,月未盛之明也,從月出。」「朏」是月亮出來了,但是還不十分明亮的意思。
月亮和太陽成九十度角,叫作弦。《釋名·釋天》:「弦,月半之名也,其形一旁曲,一旁直,似張弓施弦也。」有上弦下弦之分。上弦指初七或初八,下弦指二十二日或二十三日。
商周時代,一個月分為四部分。第一部分叫初吉,指初一到初七或初八,即朔日到上弦的一段時間。金文《?敦》:「惟二年正月初吉,王在周邵宮。」第二部分叫既生魄(也寫作霸) ,指初八或初九到十四日或十五日,即上弦到望日的一段時間。《尚書·武成》:「既生魄,庶邦冢君暨百工受命於周。」第三部分叫既望⑤ ,指十五日或十六日到二十二日或二十三日,即望日到下弦的一段時間。《尚書·召誥》:「惟二月既望,越六日乙未,王朝步自周,則至於豐。」第四部分叫既死魄,指二十三日到二十九日或三十日,即下弦到晦日的一段時間。金文兮伯吉父盤:「唯五年三月既死霸庚寅。」又有哉生魄,指初二或初三。《尚書·康誥》:「惟三月哉生魄,周公初基,作新大邑於東國洛。」旁死魄,指二十五日。⑥ 《尚書·武成》:「惟一月壬辰旁死魄,越翼日癸巳,王朝步自周,於徵伐商。」
一個月又分為三部分,叫作旬(甲骨文已有「旬」字 ) 。十天為一旬,又叫「浹日」。《國語·楚語》:「近不過浹日。」十二日為「浹辰」。《左傳·成公九年》:「浹辰之間。」
四、日,時,刻,分,秒
地球自轉一周的時間叫作一日,古人以一晝夜為一日。一日分為十二時(時辰) ⑦ ,一百刻。每刻有十五分,每分有六十秒。
古人以十二辰紀時,所以後人又叫作「時辰」。從半夜算起,叫作子時。「子夜」就是半夜的意思。今人以夜裡十一點到一點的時間為子時,一點到三點為丑時,三點到五點為寅時,五點到七點為卯時,七點到九點為辰時,九點到十一點為巳時,十一點到下午一點為午時,下午一點到三點為未時,三點到五點為申時,五點到七點為酉時,七點到九點為戌時,九點到十一點為亥時,這是符合古制的。
古代計時,用銅壺滴漏法。受水壺裡有立箭,箭上畫分一百刻,所以叫作「刻」。古代所謂「刻」,與今人所謂「刻」稍有不同。現在一晝夜分為九十六刻,而古人一晝夜分為一百刻⑧ 。
晝夜長短,隨著時節而不同。依《後漢書》,夏至晝六十五刻,夜三十五刻。冬至晝四十五刻,夜五十五刻。春分夜五十五刻八分,夜四十四刻二分。秋分晝五十五刻二分,夜四十四刻八分。這只是就中原地區來說,至於其他各地,晝夜長短是不同的。⑨
遠在商代以前,古人就用干支紀日。以十干配十二支,得六十「甲子」。如下表:
甲子 乙丑 丙寅 丁卯 戊辰 己巳
庚午 辛未 壬申 癸酉 甲戌 乙亥
丙子 丁丑 戊寅 己卯 庚辰 辛巳
壬午 癸未 甲申 乙酉 丙戌 丁亥
戊子 己丑 庚寅 辛卯 壬辰 癸巳
甲午 乙未 丙申 丁酉 戊戌 己亥
庚子 辛丑 壬寅 癸卯 甲辰 乙巳
丙午 丁未 戊申 己酉 庚戌 辛亥
壬子 癸丑 甲寅 乙卯 丙辰 丁巳
戊午 己未 庚申 辛酉 壬戌 癸亥
注意:先秦兩漢,關於每月的日期,都不說初一、初二、初三等,而是用干支紀日。例如《左傳·僖公三十二年》:「冬,晉文公卒,庚辰,將殯於曲沃。」據後人考證,這個庚辰是魯僖公三十二年十二月十日。後來曾用初一、初二、初三等紀日法,但歷史學家仍用干支紀日法。
六十甲子大致相當於兩個月,但是由於月大月小合起來只有五十九日,所以每月的干支和日期的對應常常不是一樣的。假定正月初一是甲子,則三月初一是癸亥,等等。
五、四時,節,候
一年分為四時,近代叫作四季。正月、二月、三月為春,四月、五月、六月為夏,七月、八月、九月為秋,十月、十一月、十二月為冬。⑩
一年分為二十四個節氣,古代叫作「節」或叫作「氣」。每月有兩個節氣,在前者叫作節氣,在後者叫作中氣。在正常的時候,二十四個節氣和四時十二個月的配合如下表:
(一)春季
正月 (孟春) 立春 雨水
二月 (仲春) 驚蟄 春分
三月 (季春) 清明 穀雨
(二)夏季
四月 (孟夏) 立夏 小滿
五月 (仲夏) 芒種 夏至
六月 (季夏) 小暑 大暑
(三)秋季
七月 (孟秋) 立秋 處暑
八月 (仲秋) 白露 秋分
九月 (季秋) 寒露 霜降
(四)冬季
十月 (孟冬) 立冬 小雪
十一月 (仲冬) 大雪 冬至
十二月 (季冬) 小寒 大寒
最初的時候,大約只規定了四個節氣,即春分、夏至、秋分、冬至。簡稱「分至」。⑪ 在《尚書·堯典》里,叫作仲春、仲夏、仲秋、仲冬(見下文) 。後來,增加到八個節氣,即《左傳·僖公五年》所謂「分至啟閉」。「分」指春分、秋分;「至」指夏至、冬至;「啟」指立春、立夏;「閉」指立秋、立冬。最後規定為二十四個節氣。在《淮南子》中,二十四個節氣已經具備。
二十四個節氣是一個太陽年的二十四等分,所以我們說節氣是陽曆。一個太陽年共約365日,因此,每一個節氣是15.2日有奇。⑫
比節更小的單位是「候」。每一個節氣有三個候。一個候是五日有奇。古人所謂「時候」,就是指時令和節候。梁簡文帝《與劉孝綽書》:「玉霜夜下,旅雁晨飛,想涼燠得宜,時候無爽。」古人所謂「歲候」,也是指時令和節候。《文選》所收顏延之《夏夜呈從兄散騎車長沙》詩:「歲候初過半,荃蕙豈久芬!」
講到這裡,我們可以總結一下。所謂歲實,是一歲(一個太陽年) 實行之數。八等分為八節(分至啟閉) ,二十四等分為節氣、中氣,七十二等分為候。
古人憑什麼規定節氣呢?憑天文。具體的辦法是:晝測日影,夜考中星。
古人用土圭測日影,夏至日影一尺五寸,影最短;冬至日影一丈三尺,影最長。其餘節氣由此類推。詳見《後漢書·曆法》。
所謂夜考中星,是觀察初昏時刻的中天星座。白天見日不見星,所以要在初昏觀星。《尚書·堯典》說:
日中星鳥,以殷仲春;日永星火,以正仲夏;宵中星虛,以殷仲秋;日短星昴,以正仲冬。
仲春、仲秋,指春分、秋分。中,指晝夜平分。日指晝,宵指夜,晝夜平分,則「日中」「宵中」是一樣的。仲夏、仲冬,指夏至、冬至。日永,指夏至晝長;日短,指冬至晝短。仲春日中星鳥,是說春分初昏中星為鶉鳥(即二十八宿中的星宿) ,仲夏日永星火,是說夏至初昏中星為大火(即心宿) ;仲秋宵中星虛,是說秋分初昏中星為虛宿;仲冬日短星昴,是說冬至初昏中星為昴宿。
日躔(太陽經過的星座) 在二十八宿中。二十八宿是:
東方蒼龍七宿,角亢氐房心尾箕;
北方玄武七宿,鬥牛女虛危室壁;
西方白虎七宿,奎婁胃昴畢觜參;
南方朱雀七宿,井鬼柳星張翼軫。
我們觀測到了初昏中星,也就可以推知日躔所在,同時也可以推知平旦的中星。所以《禮記·月令》上說:
孟春之月,日在營室⑬ ,昏參中,旦尾中。
仲春之月,日在奎,昏弧中,旦建星中⑭ 。
季春之月,日在胃,昏七星中,旦牽牛中⑮ 。
孟夏之月,日在畢,昏翼中,旦婺女中⑯ 。
仲夏之月,日在東井⑰ ,昏亢中,旦危中。
季夏之月,日在柳,昏火中⑱ ,旦奎中。
孟秋之月,日在翼,昏建星中,旦畢中。
仲秋之月,日在角,昏牽牛中,旦觜觿中⑲ 。
季秋之月,日在房,昏虛中,旦柳中。
孟冬之月,日在尾,昏危中,旦七星中。
仲冬之月,日在斗,昏東壁中⑳ ,旦軫中。
季冬之月,日在婺女,昏婁中,旦氐中。
《詩經·鄘風·定之方中》:「定之方中,作於楚宮。」定即營室(室宿) ,「定之方中」,是說昏營室中,指的是夏曆十月㉑ 。詩人不說「十月」,而說「定之方中」,可見他是有天文學知識的。
六、贏縮
《史記·天官書》:「歲星贏縮。……其趣舍而前曰贏,退舍曰縮。」後來天文學家以贏縮指視太陽在黃道上運行的速度,也寫作「盈縮」。由於地球繞太陽的軌道是橢圓的,視太陽在黃道上運行的速度有快有慢,快的時候叫作贏,慢的時候叫作縮。夏天時速度慢,從春分到秋分,要走186天多;冬天時速度快,從秋分到春分,只須走179天多。如果按節氣的平均天數來計算,從冬至到春分有六個節氣,實際上不到90天,所以曆法上規定的春分並不在晝夜平分的那一天,而是在春分前三天就晝夜平分了;同理,從夏至到秋分有六個節氣,實際上超過90天,所以曆法上規定的秋分也不在晝夜平分的那一天,而是在秋分後三天才能晝夜平分。
七、定朔,定氣
古人發現日有贏縮之後,知道一年月大月小相間,每年規定為三百五十四日的曆法是不夠精密的。日行有贏縮,月行有遲疾,所以朔日不能不依贏縮遲疾來規定,容許有一連兩個月大或一連兩個月小。這種辦法叫作「定朔」(古法叫作「經朔」) 。古代有個朓字,指的是「晦而月見西方」。自從有了定朔之後,「朓」的現象就不再出現了。
古人發現日有贏縮之後,知道一歲為二十四等分以定二十四節氣的曆法是不夠精密的。有些節氣的距離要遠些,有些要近些。古法叫作「恆氣」,新法叫作「定氣」。有了定氣,閏月無中氣的規定也不是完全正確的了。㉒
八、閏月
置閏,是為了解決陰陽曆的矛盾。上文說過,二十四節氣是太陽年的二十四等分,那是陽曆。歲實一年365 ¼日。而陰曆每年只有354日,這樣,每年剩餘11¼日。因此,三年之後,須增加一個月,叫作閏月。閏月一般是29日,三年置閏後,還不足三年的歲實,差4¾日,所以第五年又要置閏。《易經·繫辭上》說:「五年再閏。」就是這個道理。但是五歲再閏的曆法還不夠精密,因為五年置閏兩次,卻又多出了1¾日,所以後人又規定十九年七閏。大約每三十二個月有一個閏月。
《尚書·堯典》說:「以閏月定四時成歲。」為什麼要有閏月才能定四時,才能成歲呢?周天三百六十度,日行一度時,月行13 ¹⁷/₁₉度,如果沒有閏月,則三年差一個月,以後每月都差;九年差三個月,即以春為夏;十七年差六個月,則四時相反,怎能成歲?
商周時代,曆法未密,閏月都在歲末。秦代以十月為歲首,所以閏月稱為後九月。漢初還沿用秦舊法,直到漢武帝太初元年改歷以後,才改為以無中氣的月份為閏月。為什麼要以無中氣的月份為閏月呢?由於陰陽曆的矛盾,節氣常常落在月份的後面。中氣本該在月之十六日,逐漸移到晦日(二十九日或三十日) 。這是陰陽曆矛盾到了極點的時候,所以要在這裡安置一個閏月。閏月的節氣在月之十五日,那麼這個節氣後面的中氣應在下月朔日,所以說「閏月無中氣」㉓ 。
九、歲差
由於太陽和月亮的引力對於地球赤道的作用,使地軸在黃道軸的周圍作圓錐形的運動,慢慢地向西移動,使春分點以每年約五十秒的速度向西移行㉔ ,這種現象叫歲差。
首先發現歲差的是晉代天文家虞喜,後來南朝宋何承天、南齊祖沖之、隋劉焯、唐僧一行沿用其法,而更加精密。
古人發現歲差,是由於觀測到節氣的日躔和中星隨時代而不同。《尚書·堯典》說:「日短星昴,以正仲冬。」《禮記·月令》說:「仲冬之月,昏東壁中。」是誰對呢?兩種說法都對。因為《堯典》講的是殷末周初的曆法,《月令》講的是周代的曆法。相距數百年,冬至的中星自然不同了。據《協紀辨方書》,清代冬至的中星又移到危宿。這都證明了歲差。殷時春分日躔在昴,清代春分日躔在室,相距三千多年,日躔變化自然也很大。
懂得歲差,對閱讀古書幫助很大。《尚書·堯典》說:「日中星鳥,以殷仲春;日永星火,以正仲夏;宵中星虛,以殷仲秋;日短星昴,以正仲冬。」偽孔傳的作者不懂歲差,只能含糊地解釋說:「鳥,南方朱雀七宿,春分之昏,鳥星畢見;火,蒼龍之中星,舉中則七星見可知;虛,玄武之中星,亦言七星皆以秋分日見;昴,白虎之中星,亦以七星並見。」孔穎達沿用這種錯誤的解釋。惟有馬融、鄭玄認為「春分之昏七星中,仲夏之昏心星中,秋分之昏虛星中,冬至之昏昴星中」,才是得其正解。宋蔡沈《書集傳》引用唐僧一行的歲差說,證明堯時以鶉火為春分昏之中星,大火為夏至昏之中星,虛宿為秋分昏之中星,昴宿為冬至昏之中星。科學進步,解決了古書中的一些疑難問題。
《夏小正》所講的中星,和《堯典》所講的中星相似。有人根據《夏小正》和《堯典》所講的中星去解釋《詩經》的中星,則陷於錯誤。《詩經·豳風·七月》:「七月流火,九月授衣。」有人解釋說:「火,或稱大火,星名,即心宿。每年夏曆五月,黃昏時候,這星當正南方,也就是正中和最高的位置。過了六月就偏西向下了,這就叫作流。」這是根據《夏小正》和《堯典》來解釋的。《夏小正》說:「五月初昏大火中。」《堯典》說:「日永星火,以正仲夏。」但這種解釋是錯誤的,因為周代的中星已經不再是夏代的中星了。戴震說:「據周時季夏昏火中,故孟秋之月初昏已過中,但見其西流耳。若《堯典》之『日永星火,以正仲夏』,《夏小正》之『五月初昏大火中』,則流火自六月矣。此虞夏至周,歲差不同也。」(見《詩補傳》)
中國天文學家發現歲差,比西洋為早,這是中國古代燦爛文化之一證。我們研究古代漢語,同時要研究古代曆法;而研究古代曆法,同時要研究天文。這是對研究古代漢語的人較高的要求。
(原載《文獻》1980年第一期)
① 年和歲混用則不別。《爾雅》「夏曰歲、商曰祀、周曰年、唐虞曰載。」
② 北京大學林庚教授說,屈原並非生於寅年寅月。
③ 焉逢即閼逢,端蒙即旃蒙,游兆即柔兆,強梧即強圉。
④ 一般注本都說《赤壁賦》「既望」指的是七月十六日,其實是七月十七日,因為那年壬戌七月是大月。
⑤ 這所謂「既望」和後代所謂「既望」(十六日) 不同。
⑥ 關於「初吉」「生魄」「死魄」「既望」這些名稱,有各種不同的解說,今依王國維說。
⑦ 現在我們依照國際習慣,一日分為二十四小時。小時只有時辰的一半,所以稱為「小時」。
⑧ 梁天監年間,曾一度改為九十六刻,但不久又改回來了。
⑨ 據清代《協紀辨方書》,夏至晝五十九刻五分,夜三十六刻十分;冬至晝三十六刻十分,夜五十九刻五分;春分、秋分,晝夜各四十八刻。那是依每日九十六刻計算的。與《後漢書》稍有不同。
⑩ 周曆以子月為正月,所以四時都比夏曆早兩個月。《孟子·滕文公上》:「秋陽以暴之。」「秋陽」指的是夏曆五、六月的太陽。
⑪ 「分」是晝夜平分的意思。「至」是極、最的意思。夏至日最長,日行最北,日影最短;冬至日最短,日行最南,日影最長。
⑫ 這是所謂恆氣。但實際規定的節氣不是二十四等分。日行有遲有速。冬至日行最速,春分前三日已行天一個象限(九十度) ,等等。後人曆法精密,以日行天的度數規定節氣,叫作定氣,與恆氣稍有出入,參看下文《贏縮》。
⑬ 營室,即室宿。
⑭ 弧,又叫弧矢,在鬼宿之南。建星在斗宿上。
⑮ 七星,即星宿。牽牛即牛宿。
⑯ 婺女,即女宿。
⑰ 東井,即井宿。
⑱ 火,即心宿。
⑲ 觜觿,即觜宿。
⑳ 東壁,即壁宿。
㉑ 《禮記·月令》:「孟冬之月,昏危中。」營室和危宿距離很近。
㉒ 例如:清咸豐元年八月沒有中氣,置閏;次年二月沒有中氣,不置閏。
㉓ 這是一般的情況,閏月也可能有中氣,那是例外。
㉔ 周天360度,每度60分,每分60秒。