總之,在《顓頊曆》行用期間,置閏關係有第一式和第二式的變化。了解了這個變化,就克服了複製晚秦漢初長曆表的第一個難題。
三、連大月的排列
《顓頊曆》朔策為日,相當於二十九天半多一點,因此就產生了大月小月的問題。小月二十九日,大月三十日,互相間錯,以使合朔始終在每月的初一。但是朔策並不恰好是二十九天半,它比日還要多日,這個尾數累積久了,就必須多置一個大月來加以調整。本來大月小月是間錯排列的,這樣就形成了若幹個月以後,有兩個大月相連的情況。大月相連稱為連大月。正確地排列連大月也是複製曆表的一個重要課題。根據日的小餘來計算,每隔十七個月或十五個月便要設置一次連大月。
可知每十七個月設置一次連大,但仍有小餘日。這個小餘需並入下一個月。第二次十七個月設置連大以後,又有小餘日,兩次餘數積累為日。這個餘數並入下一個月以後,經十五個月便要設置連大,這時,小餘為日,因此,每十七個月設置連大時,餘數為23,每十五個月設置連大時去餘數35.從蔀首開始,每蔀共置五十八次連大。連大月的排列有它自己的周期。
《顓頊曆》每蔀開始按照表七的排列次序設置連大月,每蔀九百四十個月構成一次循環。以公元前366年正月甲寅朔旦立春為曆元,用這個連大排列法,證明和現有資料是吻合的。
四、分至點
《元光曆譜》載有十一月二十八日丙戌冬至、正月十五日壬申立春、六月三日戊子夏至、七月二十日甲戌立秋四個節氣。因而我們知道當時通行的曆譜上是注明節氣的。這裏有兩個問題需要研究:一、這四個分至點在該日的哪一時刻?二、這四個節氣是按照《顓頊曆》曆元正月朔旦立春來推算的,還是照按閏章的標誌十一月朔旦冬至來推算的?弄清了這兩個問題才能計算出其它各年的分至點。
可以知道立春距夏至為136日23時15分。根據《元光曆譜》可知,正月十五日立春距六月三日夏至中間相隔有135日,再加上正月十五日和六月三日本身,共得137日。由此可以得出結論,元光元年立春的時刻必定在正月十五日壬申這一天的0時0分至0時45分之間。假如立春在0時45分以後,夏至就將進入六月三日戊子以後的第二天,即六月四日己醜。這是和《元光曆譜》相矛盾的,所以不能成立。
按照正月朔旦立春為曆元計算,由於歲實有尾數日,立春必將依次在第一年的0日,第二年的日,第三年日,第三年的日,第五年又為0日。合成小時計算,立春必在0時、6時、12時、18時這四點上。上麵據《元光曆譜》考察,元光元年立春在正月十五日壬申0時至0時45分之間,和由曆元計算的立春點結合起來看,該年的立春在正月十五日壬申0時0分是毫無疑問的。
確定了立春點,就可以按表八推算出該年其它各分至點的時刻。結果是冬至在十一月二十八日丙戌8時15分,夏至在六月三日戊子23時15分,立秋在七月二十日甲戌15時0分,和《元光曆譜》的記載完全符合。見下表:
表九
另一方麵,也可以用《顓頊曆》的曆元來求出元光元年的立春。公元前366年正月甲寅朔旦立春,下距元光元年為232年。積日為:
日
按照六十幹支順序為:
從甲寅下數18正為壬申始,即壬申日0時0分。這說明,公元前366年甲寅朔旦立春,經232年以後,至元光元年的立春必為壬申日的開始,此和上文用《元光曆譜》推算的結果恰相一致。[17]這就證明了《元光曆譜》上標列的節氣是按照《顓頊曆》的曆元推算出來的。
下麵再以閏章的冬至來和《元光曆譜》所提供的分至點進行驗算。據表五可以知道元光元年即前134年,屬於閏章第二式的第九年。前文已說明,閏章第二式實際上就是《殷曆》的閏章。前134年屬於前199年開始的《殷曆》丙午蔀第四章。丙午蔀首冬至距元光元年為:
199-134=65
積日為:
365×65=23741日
按照六十幹支順序為:
23741-n·60=41
從丙午下數41為丁亥日的日,即丁亥日6時。這裏按閏章計算的結果,元光元年的冬至當在十一月二十九日丁亥的6時,而《元光曆譜》明確記載冬至在十一月二十八日丙戌。可見,《元光曆譜》的節氣不是按十一月朔旦冬至計算的。由此可以得出結論:《元光曆譜》的分至點即是朔章的分至點,亦即《顓頊曆》的分至點,而不是閏章的分至點,亦即不是《殷曆》的分至點。《顓頊曆》元光元年冬至在丙戌日8時15分,《殷曆》冬至在次日丁亥6時,這就是說,《殷曆》的各節氣恒定在《顓頊曆》各節氣之後21時45分。[18]關於分至點今時與940分日之折算。
總之,《元光曆譜》上的分至點是由《顓頊曆》的曆元推算出來的,而分至點的時刻也可以確定,因而,根據這個結果可以推算出《顓頊曆》行用期間各年度的節氣。
五、秦以十月為歲首始自何時
按照《史記》的說法,秦以十月為歲首始於秦統一中國,即秦始皇二十六年,公元前221年。《史記·秦始皇本紀》記載:“二十六年……始皇推終始五德之傳,以為周得火德,秦代周德,從所不勝。方今水德之始,改年始,朝賀皆自十月朔。”《曆書》、《封禪書》中也有類似的記載。但這個記載是不正確的。
《呂氏春秋·季秋紀》:“季秋之月……為來歲受朔日”高誘注:“來歲,明年也。秦以十月為正,故於是月受明年曆日也。”《呂氏春秋》成書於秦始皇八年,可見十月歲首不始於秦的統一。這個問題,清代許多考據家都曾經提出過,[19]例如汪曰楨說:“秦以十月建亥為歲首,閏在歲未,謂之後九月,不知始於何年。《史記·秦本紀》昭襄王四十八年十月在正月前,則未並天下時已如此矣。”[20]在《長術輯要》中,他把惠文王元年暫定為十月歲首的開始。在新發現的雲夢秦簡《大事記》中,有“(秦昭王)五十六年後九月”的記載,昭王時代置閏於後九月,這有力地說明了至少在秦統一中國的幾十年以前,就實行了以十月為歲首的製度。可以肯定,《史記》的記載是有問題的。
《史記》中記述秦統一以前有月分的資料,有時十月在正月前,有時十月在正月後,究竟是以十月,還是以正月為歲首,搞得相當混亂。造成混亂的原因有二。一是司馬遷在寫《史記》的時候,資料不足。他在《史記·六國年表》中就曾歎息說:“惜哉,惜哉!獨有《秦記》,又不載日月,其文略不具。”因為材料太簡略,為使敘述方便,司馬遷無法嚴格地按照月份的次序來撰著每年當中的事件。二是《史記》在流傳過程中又有偽誤。例如《秦始皇本紀》中記載:“(秦始皇)四年,拔暢、有詭。三月,軍罷。秦質子歸自趙,趙太子出歸國。十月庚寅,蝗蟲從東方來,蔽天。”三月在前,十月在後,應當說明以正月為歲首。但這裏的十月可以斷言為七月之誤。十和七兩字在早期隸書以前的古文字中,極易互錯。再者,十月無蝗災,《兩漢書》中的《五行誌》共載蝗災二十九次,絕大部分在夏秋,從未發生在十月。《史記·六國年表》秦始皇四年欄內,正作“七月,蝗蔽天下。”[21]十月校改為七月後,就不能據此否定十月歲首的可能性。
我們再來看一看雲夢秦簡《大事記》中的另一條重要資料:“(秦昭王)卌五年,攻大野王。十二月甲午雞鳴時,喜產。”在這裏,“十二月甲午”和歲首的關係很大。同是昭王四十五年十二月,以正月為歲首和以十月為歲首,實際相差一年。
如果以正月為歲首,昭王四十五年十二月指上表中的後一個十二月,如果以十月為歲首,則指上表中的前一個十二月。根據本書《顓頊曆表新編》表二,後一個十二月朔為乙巳,甲午在乙巳後第五十,本月無甲午,而前一個十二月朔為辛巳,甲午為十四日。由此可見,昭王四十五年十二月隻能是指上表中的前一個十二月,也就是說,當時實行的必定是十月歲首的製度,而不可能是正月歲首的製度。
《顓頊曆》既以正月朔旦立春為曆元,在它行用之初,必然是以正月為歲首的。秦在奉行《顓頊曆》的過程中,把歲首由正月改為十月。這個改動決不是秦統一中國以後才開始的,《史記》關於秦歲首製度的記載是頗有問題的。但改動歲首究竟始於何時,現在沒有據以推論的資料。我們知道,至遲在昭王時期,這個改動已經進行了,因此,《顓頊曆表新編》表一、表二暫定十月歲首從昭王元年開始。
在曆法史上這個改革有很大意義。當時,閏月置於歲末,正月歲首閏十二月,十月歲首閏九月。歲首改動以後,閏十二月改為閏九月,閏月從冬至和立春之間移到了冬至以前。正月歲首的《顓頊曆》,冬至在十一月、十二月之間不停地變換。把閏月改在冬至以前,就使得冬至大大趨向於恒定在十一月了,參看下文《顓頊曆表新編》表一、表二冬至點。這是《顓頊曆》行用過程中的一大進步。
六、關於曆元的調節
上文討論了閏法、連大法、分至點和歲首,結合各蔀章的曆史年代,應該能夠製定出《顓頊曆》實用的曆表。但據此製出的曆表,與曆史記錄和出土簡牘中的朔日幹支對比,可以發現仍有許多不相符合之處。
古四分曆以365.25日為歲實,和實際的回歸年365.2422(密近)相比較,每年有0.0078日的誤差。每130左右,約差一天。結果是日蝕往往是在晦日而不是在朔日出現。從公元前366年到秦始皇元年(前246年),已經過了120之久,天象和節氣的誤差已相當明顯。要解決這個問題,便要調節曆元,把原來設定的曆元向前推和向後移若幹年。當然調節曆元以後,曆史上的年月朔望全都發生了改變,這當然是行不通的。而當時的曆法家便想出了另外一個簡單易行的辦法,那就是從特定年份開始,加減朔餘。這樣做可以和調節曆元達到相同的效果。《漢書·律曆誌》記載漢武帝時進行曆法改革,曆法家鄧平主張八十一分曆,並采用“先藉(借)半日,名為陽曆”的方法,以製定《太初曆》,後來太史令張壽王指責《太初曆》“虧小餘四分 之三日,去小餘七百五分”,可見當時曆法家使用增減朔餘的方法是確定的事實。另外,改變朔餘往往在改朝換代或帝王登基時執行,這可能和統治者篤信陰陽五行的輪替也有一定的關係。
1983年發現的張家山秦漢曆法資料,1993年發現的關沮周家台秦始皇和秦二世曆譜以及2002年發現的裏耶秦代記日幹支資料,[22]使我們在《元光曆譜》的基礎上,增加了許多新的資料。筆者對這些曆譜進行深入研究之後,現提出一個新的推步方法:即秦代曾增加朔餘四分之三日,進朔705分,其時間在秦始皇元年(前246年);漢代曾減少朔餘四分之一日,但漢初退朔是分兩次進行的,第一次退210分,時間在漢高帝元年(前206年),第二次退25分,時間在漢文帝後元二年(前162年)。用這一方法編製《顓頊曆》的曆表,和文獻資料及考古資料可以達到高度的契合。兩相印證,應該說其準確性絕非偶然。下文《顓頊曆表新編》就是嚴格按照上述各準則製成的。如有新的秦漢曆譜考古發現,對《顓頊曆表新編》進行驗證,或許還有誤差,但可確信需要改動的空間,已經很小了。