金宇飛
(上海材料研究所,上海 200437)
兩千年來,歷代學(xué)者根據(jù)各自對(duì)文獻(xiàn)和西周歷法的理解,提出了至少44種武王克商之年的假說,跨度從公元前1130年至公元前1018年[1],[2]38-39?!断纳讨軘啻こ獭肪C合利用古文獻(xiàn)和西周青銅器銘文(金文)的記載,結(jié)合考古測(cè)年和天文學(xué),推定武王克商之日是在前1046年1月20日[2]46-49。但是,前1046年方案是正月建亥和戊午在二月[3],與古文獻(xiàn)記載不符,這就留下了很大的破綻。此后又陸續(xù)出現(xiàn)了對(duì)武王伐紂之年的各種不同見解[4-8],至今各種分歧依然存在。因而,似有必要再做檢討,修訂或重新復(fù)原武王伐紂日期,以符合古籍和金文中的記載。
《史記·魯周公世家》記魯公伯禽之后的年數(shù)為:考公有四年,煬公有六年,幽公有十四年,魏公有五十年,厲公有三十七年,獻(xiàn)公有三十二年,真公有三十年,武公有九年,懿公有九年,伯御有十一年,孝公有二十七年,惠公有四十六年?!稘h書·律歷志》引《世家》記魯公伯禽之后的年數(shù)為:考公有四年,煬公有六十年,幽公有十四年,微公有五十年,厲公有三十七年,獻(xiàn)公有五十年,慎公有三十年,武公有兩年,懿公有九年,柏御有十一年,孝公有二十七年,惠公有四十六年。其中“煬公有六十年”“獻(xiàn)公有五十年”“武公有兩年”等年數(shù)與現(xiàn)今版本的《史記·魯周公世家》不同。
另外,《漢書·律歷志》也記載了若干位魯公的日期,利用《壽星天文歷》等天文日歷軟件進(jìn)行推排,得到其對(duì)應(yīng)的日歷,如表1所示。
表1 《漢書·律歷志》中記載的魯公日期所對(duì)應(yīng)的日歷
表1所對(duì)應(yīng)的日歷,符合西周初年是以朏(新月,約當(dāng)初二、初三)為月首[2]19,[9]21,也符合《魯歷》的正月建子。表1顯示的朔旦冬至,其冬至日皆在“朔”后三日或四日,不知出現(xiàn)這種規(guī)律化現(xiàn)象是何緣故。但不管怎樣,至少這些日期是存在的。
根據(jù)表1所列日期推算可得,惠公元年為前768年,懿公元年為前815年,獻(xiàn)公元年為前886年,微公元年為前973年。唯有煬公元年為前990年無甚意義,考慮到前971年亦出現(xiàn)朔旦冬至,如果假定是當(dāng)時(shí)的記錄者或抄錄者把年份弄混了,則選取前971年為煬公二十四年,煬公元年為前993年,這一結(jié)果比較有意義。而惠公之后是隱公,隱公元年按《春秋》所記載的推算為前722年,對(duì)此年份各家皆無異議。
由此可復(fù)原出魯公世家早期年表,如表2所示。
表 2 魯公世家年表(早期)
再依據(jù)《漢書·律歷志》“魯公伯禽,推即位四十六年”,由此可得,魯公伯禽元年為前1043年或前1042年。《漢書·律歷志》認(rèn)為,魯公伯禽即位之年亦即成王元年,則成王元年亦為前1043年或前1042年。
《夏商周斷代工程》依據(jù)《尚書·周書·召誥》“惟二月既望,越六日乙未,王朝步自周,則至于豐。惟太保先周公相宅,越若來三月,惟丙午朏?!焙汀妒酚洝斨芄兰摇贰俺赏跗吣甓乱椅矗醭阶灾?,至豐,使太保召公先之雒相土。其三月,周公往營(yíng)成周雒邑,卜居焉,曰吉,遂國(guó)之?!蓖婆懦龀赏跗吣甓乱椅礊榍?036年2月27日寅月廿二乙未,繼而推斷成王元年為前1042年[2]28-29。
由此可見,現(xiàn)今版本的《史記·魯周公世家》是正確的,而魯公伯禽元年如果與成王元年是同一年的話,應(yīng)為前1042年。
而成王日歷也顯然是正月建丑,與魯歷的正月建子不同,西周初年的日歷是正月建丑。
《世本》:“煬公徙魯?!睙泗斂赡馨l(fā)生在煬公六年,翌年幽公在原籍即位,從而形成兩位魯公并存且各自紀(jì)年?!妒酚洝斨芄兰摇罚骸坝墓哪辏墓軙剼⒂墓粤?,是為魏公。”或許,幽公也是逐煬公而自立。這樣就可以解釋,雖然煬公有60年,但是,6年以后的年數(shù)與幽公、魏公等的年數(shù)是并行的。
由此推測(cè),《漢書》雖然注明是引用《世家》,卻可能又同時(shí)參考了其他資料,且只顧引用不做驗(yàn)證,這也許是古人著述引用的傳統(tǒng)做法,不能以當(dāng)今的做法來審視過去。如此,依靠引用匯集而成的《古本竹書紀(jì)年》,其保持的資料原始性也就不一定完全可靠了。
武王伐殷,往伐歸獸,識(shí)其政事,作《武成》。《尚書·周書·武成》:“惟一月壬辰旁死魄。越翼日癸巳,王朝步自周,于征伐商。厥四月哉生明,王來自商,至于豐。乃偃武修文,歸馬于華山之陽(yáng),放牛于桃林之野,示天下弗服。丁未,祀于周廟,邦甸侯衛(wèi)駿奔走執(zhí)豆籩。越三日庚戌柴望,大告武成?!薄段涑伞酚只仡櫫宋渫醴ヒ笕粘蹋骸凹任煳?,師逾孟津。癸亥,陳于商郊,俟天休命。甲子昧爽,受率其旅若林,會(huì)于牧野?!?/p>
《國(guó)語·周語》:“昔武王伐殷……王以二月癸亥夜陳,未畢而雨?!?/p>
對(duì)于武王伐殷日程,自戊午師逾孟津,至甲子會(huì)于牧野,其間相隔幾天,歷來有兩說:
一是以《史記·周本紀(jì)》為代表,認(rèn)為自戊午至甲子為67天;二是以《漢書·律歷志》為代表,認(rèn)為自戊午至甲子為7天。
《史記·周本紀(jì)》:“十一年十二月戊午,師畢渡盟津,諸侯咸會(huì)?!倍稘h書·律歷志》依據(jù)《尚書·周書·泰誓》:“惟十有一年,武王伐殷。一月戊午,師渡孟津?!币粋€(gè)是“十二月戊午”,一個(gè)是“一月戊午”,兩者顯然不同。
由此,《史記·周本紀(jì)》是十二月戊午至二月甲子為67天,而《漢書·律歷志》是一月戊午至二月甲子為7天?,F(xiàn)將兩種觀點(diǎn)的日程列表如下,如表3所示。
表3 武王伐殷日程的兩種觀點(diǎn)和日期推排
由于自壬辰至戊午相隔有26天,如果都出現(xiàn)在同一個(gè)月內(nèi),必定是壬辰在月初,戊午在月末,而癸亥也就自然出現(xiàn)在下個(gè)月的月初了,《漢書》就是如此安排的。但是,由于自癸亥至丁未相隔為44天或104天,如果癸亥出現(xiàn)在二月初,那么,丁未只能出現(xiàn)在三月中旬或五月中旬,絕無可能出現(xiàn)在四月。因此,《漢書》就設(shè)想在二月至四月之間有一個(gè)閏月,使得丁未可以在四月出現(xiàn)。但是,《漢書》顯然是按照漢時(shí)的歷法在推想,卻沒想到在殷商和西周的歷法中并沒有閏月之名,而是直接使用數(shù)字連續(xù)紀(jì)月,即如果是閏二月,就順序稱之為三月,直到年末有十三月,或稱之為年終置閏[2]19,[9]19-20。因此,《漢書》設(shè)想的通過加一個(gè)閏月來解決四月丁未的困惑是不符合史實(shí)的。
盡管兩千年來,《漢書》的方案一直影響巨大,包括《夏商周斷代工程》在內(nèi)的多數(shù)武王伐紂方案都秉承了7天說。但是,在參照了殷周金文中的歷法資料后,就可知其破綻是顯而易見的。而且,按照《漢書·律歷志》所設(shè)想的武王伐殷日期,在前1200年至前1000年間的日歷上也是不存在的或未見有完全符合的。
《逸周書·世俘解》也記載了一些武王伐紂的日期:“維四月乙未日,武王成辟,四方通殷,命有國(guó)。惟一月丙午旁生魄,若翼日丁未,王乃步自于周,征伐商王紂。”“越若來二月既死魄,越五日甲子,……,丁卯,……。戊辰,……,壬申,……。辛巳,……。甲申,……。辛亥,薦俘殷王鼎。武王乃翼,矢慓矢憲,告天宗上帝。……。壬子,……。癸丑,……。甲寅,……。乙卯,……。”“庚子,……。乙巳,……。時(shí)四月既旁生魄,越六日庚戌,武王朝,至燎于周,……。若翼日辛亥,祀于位,用籥于天位?!T轿迦找颐?,……。”
按文中的日期順序,自丙午至甲子,相隔為18天。因而,只有當(dāng)丙午是在一月下半月,甲子才有可能出現(xiàn)在二月,并且很大可能是在二月上半月,這樣就不符合丙午旁生魄和既死魄甲子的記載。而要讓丙午旁生魄是在上半月,既死魄甲子是在下半月,那么丙午和甲子必然落在同一個(gè)月內(nèi),那么一月丙午和二月甲子的表述顯然是自相矛盾的。又,自甲子經(jīng)辛亥和庚子至庚戌,相隔為106天,此天數(shù)為整整三個(gè)半月。因而,如果甲子是在二月下半月,那么庚戌最早只能出現(xiàn)在六月;如果甲子是在二月上半月,那么庚戌最早也只可能出現(xiàn)在五月。由此可知,當(dāng)甲子是在二月,庚戌是不可能出現(xiàn)在四月的。因此,《逸周書·世俘解》所記載的日期是不可能的或者是混亂的。若要解決這些混亂,只能假設(shè)《逸周書·世俘解》是由不同來源的至少3篇文章匯編而成,且其原始資料各自采用的是不同歷法,即年首的正月不同,這些混亂正是由于不同文章各述各的日期所致。
綜上所述,《漢書·律歷志》所設(shè)想的武王伐紂日期是不存在的,《史記·周本紀(jì)》和《武成》記載的武王伐紂日期可能是符合現(xiàn)實(shí)的,而《逸周書·世俘解》記載的武王伐紂日期是混亂的和需要重新編排的。
兩千年來,在諸多的武王伐紂之年假說中,影響最大的是前1122年說和前1027年說。
前1122年說,出自黃宗羲(清)的《歷代甲子考》:“魯公伯禽四十六年,考公四年,煬公六十年,幽公十四年,微(《史記》作魏)公五十年,厲公三十七年,獻(xiàn)公五十年,愼公三十年,武公兩年,懿公九年,伯御十一年,孝公二十七年,惠公四十六年,凡伯禽至惠公三百八十六年。伯禽以成王元年癸巳歲卽位,至康王十六年戊寅薨?!S沙赏跎贤?,周公攝政七年,武王克殷后七年而崩,故伐紂之歲,斷以為己卯也?!薄稓v代甲子考》所推斷的這個(gè)己卯年即前1122年,即以惠公末年為前723年,上推386年再加14年所得。而《歷代甲子考》的魯世家年數(shù),是引用自《漢志》(《漢書》)。前已證明《漢書》給出的魯世家年數(shù)有誤,故以此而推斷出來的武王伐紂之年為前1122年也就是不可信的。
前1027年說,出自《古本竹書紀(jì)年》“自武王滅殷,以至于幽王,凡二百五十七年”。通常以幽王末年為前771年,上推257年,即得出武王滅殷是在前1027年。按照前1027年說,則西周年數(shù)是大大減少,這就很難同時(shí)滿足《史記·周本紀(jì)》等諸多古籍中記載的“成康之際,天下安寧,刑錯(cuò)四十余年不用”和“穆王立五十五年”。而若要滿足成康“四十余年”,則必然要減少穆王在位年數(shù)[5],這是前1027年說的兩難之處。
此外,前1122年說和前1027年說,也與成王元年為前1042年相差太大。
《古本竹書紀(jì)年》:“十一年庚寅,周始伐商?!薄督癖局駮o(jì)年》:“帝辛五十二年庚寅,周始伐殷。秋,周師次于鮮原。冬十有二月,周師有事于上帝。庸、蜀、羌、髳、微、盧、彭、濮從周師伐殷?!薄拔渫跏晷撩?,王率西夷諸侯伐殷?!薄跋乃脑?,王歸于豐,饗于太廟?!薄吨駮o(jì)年》的這些記載與《史記·周本紀(jì)》“十一年十二月戊午,師畢渡盟津,諸侯咸會(huì)”等是一致的。
所謂“周始伐殷。秋,周師次于鮮原”,應(yīng)該理解為大隊(duì)先行,并且是在武王十一年庚寅秋。“冬十有二月”,也應(yīng)該是在武王十一年庚寅。而“王率西夷諸侯伐殷”,是在武王十二年辛卯。這也表明了,武王應(yīng)該是在大隊(duì)渡過黃河后才出征伐殷,這與武王伐紂天數(shù)的分析也是相容的。
但是,《泰誓》的“惟十有一年,武王伐殷。一月戊午,師渡孟津”,顯然與《史記·周本紀(jì)》和《竹書紀(jì)年》等是不一致的?!拔煳纭本烤故窃凇笆荒晔隆边€是在“十一年一月”?
如果認(rèn)為兩者都沒有錯(cuò),那就只有一種可能,即武王克商后是更改了歷法,也就是更改了年首正月。綜合有關(guān)武王伐紂的文獻(xiàn)記載,考慮到成王日歷為正月建丑,還有西周金文顯示的西周歷法主要是正月建子、建丑[2]19,再考慮到《史記·周本紀(jì)》記載的周人祖先為夏后稷,因而周人可能會(huì)沿用夏歷,因此推測(cè):武王克商后,是將十二月改成了一月,即將原來是按照夏歷的正月建寅,改成了按照殷歷的正月建丑。這可能也是周人以此來表明其可以作為殷商的正統(tǒng)繼承者的一種體現(xiàn)。
這樣就可以解釋,由于發(fā)生了這次改歷,導(dǎo)致新舊文獻(xiàn)中的日期出現(xiàn)了不一致?!妒酚洝ぶ鼙炯o(jì)》采用的顯然是《武成》之類的舊文獻(xiàn),而《泰誓》應(yīng)該是改歷后的新文獻(xiàn),可能是在武王十三年修改過和最終定稿的。
但是,十一年十二月更改為一月,應(yīng)該是十二年一月,可《泰誓》里卻仍為十一年一月。這里可能隱藏了一個(gè)重大失誤,即武王十一年十二月改為一月,卻沒有改年號(hào),這樣,武王十一年很可能是連續(xù)用了兩年。
所以在《今本竹書紀(jì)年》中,既有武王“十二年辛卯,王率西夷諸侯伐殷”,又有“武王滅殷,歲在庚寅”這樣相互矛盾的記載。顯然這是后人將武王十二年(辛卯年)滅殷的事,算在了庚寅年(武王十一年)。由此可見,不僅武王十一年連續(xù)用了兩年,庚寅年也同樣連續(xù)用了兩年。
再看《古本竹書紀(jì)年》的“自武王滅殷,以至于幽王,凡257年”,如果以幽王元年的前781年上推[4],則得到的結(jié)果是前1037年,這與前1051年剛好相差14年?;蛟S,《古本竹書紀(jì)年》的257年只是統(tǒng)計(jì)了周王實(shí)際統(tǒng)治的年數(shù),而未包含共和行政的14年。
《漢書·律歷志》引《春秋歷》“周文王四十二年十二月丁丑朔旦冬至,孟統(tǒng)之二會(huì)首也。后八歲而武王伐紂”。經(jīng)天文日歷推排,前1200年至前1000年間,未見符合此條件的日子。唯有前1058年12月31日,恰逢子月初一與冬至同日,不過此日為丙午,并非丁丑。不過12月2日即上個(gè)月的亥月初一恰好是丁丑。這或許是《春秋歷》所依據(jù)的原始資料,因漏簡(jiǎn)而造成了“丙午朔”等字的缺失,使得“朔旦冬至”的前面只見有“丁丑朔”了,以為就是“丁丑朔旦冬至”了。至于“十二月”,應(yīng)該是后人只知西周是正月建丑,以為文王也應(yīng)該是,繼而在“丁丑朔旦冬至”前添加了“十二月”。如果按照前1058年為文王四十二年進(jìn)行推算,則文王元年為前1099年。
《逸周書·小開》:“維三十有五祀,……,正月丙子,拜望,食無時(shí)?!辈镾ky Map Pro11天文軟件中的月食表,得到豐鎬地區(qū)(北緯34°13′0″,東經(jīng)108°43′59″)可見月食的日歷,如表4所示。
表4 丙子月食
以此推算,文王元年亦為前1099年,而且是正月建寅,符合前面的改歷假設(shè)。
此外,武王伐紂已是武王十一年或十二年了,為何《漢書·律歷志》是文王四十二年后八歲?這一混亂似乎可以印證《史記·周本紀(jì)》所記載的“武王自稱太子發(fā),言奉文王以伐,不敢自?!睉?yīng)該是史實(shí),即武王即位后只是對(duì)內(nèi)使用自己的年號(hào),對(duì)外仍沿用文王的年號(hào),并仍以文王的名義伐紂。以前1051年為第2個(gè)武王十一年,則武王元年為前1062年。以文王元年為前1099年,則文王實(shí)際在位37年,至克殷二年即前1050年正好為50年,這才公告文王崩,故文王名義在位50年,此公告也被各地史官各自記錄在冊(cè)而成為鐵證。此后,克殷二年的文王崩,又與武王十一年伐紂克殷的史實(shí)交織在一起,最終被后世史家界定為克殷二年的文王崩當(dāng)然應(yīng)該是武王崩,太史公也被惑,并在《史記》中留下了“西伯蓋即位50年”和“武王克殷二年崩”。而根據(jù)《尚書·周書·泰誓》“惟十有三年春,大會(huì)于孟津”,表明武王十三年還在,不止2年。再依據(jù)其他記載(當(dāng)然有很多),又出現(xiàn)了武王年和四年說[10-12],古今都被惑了。
《漢書·律歷志》:“成王元年正月己巳朔,此命伯禽俾侯于魯之歲也。后三十年四月庚戌朔,十五日甲子哉生霸。故《顧命》曰:‘惟四月哉生霸,王有疾不豫,甲子,王乃洮沫水’,作《顧命》。翌日乙丑,成王崩?!?/p>
經(jīng)天文日歷推排,這些日期所對(duì)應(yīng)的日歷如表5所示。
表 5 《漢書·律歷志》中記載的成王日期所對(duì)應(yīng)的日歷
得到的成王元年為前1045年,并不是前1042年。得到的后三十年為前1006年,而實(shí)際日歷卻是后四十年。
若以成王元年為前1042年,那前1006年恰好是成王三十七年,這與《今本竹書紀(jì)年》的記載正好吻合。
但依據(jù)《漢書·律歷志》,成王元年卻為前1045年?!督癖局駮o(jì)年》記載:“武王十七年冬十有二月,王陟?!币晕渫踉隇榍?062年,那么武王十七年就應(yīng)該是在前1046年,剛好可以銜接成王元年的前1045年。
西周早期青銅器庚嬴鼎的銘文中有“廿又二年四月既望己酉”[13],經(jīng)天文日歷推排,此日即前1024年5月9日,陰歷十七,當(dāng)年正月建丑。推算其元年為前1045年,也剛好與成王元年為前1045年一致。
由此可知,前1045年和前1042年都是成王元年。這可能是各家對(duì)待成王元年的觀點(diǎn)不同,有的認(rèn)為前1045年已確定成王為繼任者就應(yīng)該算作成王紀(jì)年,而有的認(rèn)為前1042年成王舉行了即位儀式后才算。或許,這也可能是反映了武王崩后各家對(duì)周公攝政或篡權(quán)的不同態(tài)度。
如果前1045年為成王元年,那么到前1006年應(yīng)該已是成王四十年了,而不是成王三十年。這可以認(rèn)為《漢書》所依據(jù)的原始資料可能是把“卌”誤當(dāng)成“卅”了。
《國(guó)語·周語》:“昔武王伐殷,歲在鶉火,月在天駟,日在析木之津,辰在斗柄,星在天黿,星與日辰之位皆在北維。”
對(duì)其中所述天體的注釋如表6所示。(表中的英文星名取自《中西對(duì)照恒星圖表》[14])
表 6 《國(guó)語·周語》中所述天體注釋
按天體運(yùn)行規(guī)律,月亮是一個(gè)朔望月走完二十八星宿,大約每天經(jīng)過一個(gè)星宿;太陽(yáng)是一個(gè)回歸年走完十二星次,大約每月經(jīng)過一個(gè)星次,或者說在每個(gè)星次里要運(yùn)行大約一個(gè)月;木星大約是十二年走完十二星次,大約每年經(jīng)過一個(gè)星次,或者說在每個(gè)星次里要運(yùn)行大約一年。二十八星宿和十二星次,是專用于定位月亮、太陽(yáng)和木星的,并以此來紀(jì)日、紀(jì)月和紀(jì)年。用木星來紀(jì)年,故木星又稱為歲星。由此可知,月亮每月都會(huì)有一天來到天駟(房宿);太陽(yáng)每年都會(huì)有一個(gè)月在析木之次,即有立冬和小雪的那個(gè)月,三千年前時(shí)大約是在公歷(太陽(yáng)歷)的11月9日至12月8日之間;木星大約每12年都會(huì)有一年在鶉火之次。因此,“歲在鶉火,月在天駟,日在析木之津”是一個(gè)明確記載有年月日的日期,如果缺少其中一個(gè),譬如不考慮“歲在鶉火”,那就變成了每年都會(huì)有這一天。因而,把“月在天駟,日在析木之津”定在前1044年,卻把“歲在鶉火”定在前1047年[15],是違背原意的拆分,所得結(jié)果必定是錯(cuò)誤的,不符合其他天象和日期也是必然的。
此外,按黃經(jīng)算,房宿至斗柄相距約30°,這樣,月亮從天駟到斗柄需要走大約2.5天。因此,“月在天駟”和“辰在斗柄”的天象不會(huì)發(fā)生在同一天,兩者相隔有二三天,所以《漢書·律歷志》“后三日合辰”是正確解釋。同樣,按黃經(jīng)算,斗宿至女宿相距約30°,而水星由于是在地球軌道內(nèi)側(cè)運(yùn)行,且離太陽(yáng)最近,所以從地球上看,水星與太陽(yáng)的最大距離只有28°。因此,日月合朔即便是在析木之末的斗宿,水星也不可能同時(shí)出現(xiàn)在天黿之首的女宿,即“辰在斗柄”和“星在天黿”的天象也不會(huì)發(fā)生在同一天。由此可知,《國(guó)語·周語》所說的天象并不發(fā)生在同一天,而是對(duì)3次天象記錄的匯總,即“歲在鶉火,月在天駟,日在析木之津”為第1次,后三日的“辰在斗柄”為第2次,又若干日出現(xiàn)的“星在天黿”為第3次,而斗宿和女宿皆屬于北方玄武,故謂“星與日辰之位皆在北維”。
按照上述理解,利用SkyMapPro11天文軟件,即可推排出前1140年至前1000年期間,符合《國(guó)語·周語》所說天象的日歷,如表7所示。
表7 符合《國(guó)語·周語》所說天象的可能日歷
從表7可知,符合《國(guó)語·周語》所說天象的日期共有9個(gè)。唯有前1047年,由于恰逢水星與太陽(yáng)同在女宿,因而在“日在析木”之后是見不到“星在女宿”天象的。再次明顯可見水星,是在前1046年1月11日,而此時(shí)水星已到了危宿,即早過了女宿?;蛘甙凑枕f昭所注而認(rèn)為天黿是玄枵之次[3],[16],包括了女、虛、危三宿,即星在女、虛、危三宿都是星在天黿,等同于“星在玄枵”。但是,如果這樣,那就等于說“星在天黿”每年都可見,甚至是好幾天,而且位置不定,區(qū)域較大,也就是說這是一個(gè)既平常又沒有特征的天象,如此記錄“星在天黿”有什么意義呢?“星在玄枵”就像“月在玄枵”一樣,是毫無意義的天象。而《漢書·律歷志》“婺女天黿之首”的解釋就很有意義了,因?yàn)椤靶窃谂蕖辈粌H一年只有一天,而且還不一定每年都能見到,這與“辰在斗柄”也不是每年都會(huì)發(fā)生是一樣的情況。這樣,以距離斗宿最近的天黿之首的女宿,作為“星在天黿”,就與“辰在斗柄”的意義一樣了,都是用唯一且難得的天象來補(bǔ)充說明和標(biāo)定“歲在鶉火,月在天駟,日在析木之津”這一天的。因而,前1047年的天象并不完全符合《國(guó)語·周語》的意義。而在全部的10條中,唯有前1058年為最佳,出現(xiàn)的3次天象前后只有17天,這就最能符合《國(guó)語·周語》的天象及其記錄的意義。
《帝王世紀(jì)》:“文王即位四十二年,歲在鶉火,文王于是更為受命之元年,始稱王矣?!鼻耙淹婆牛耐跛氖昙辞?058年。而按照上表,前1058年也是歲在鶉火?!稘h書·律歷志》:“文王受命九年而崩”,若以受命之年為前1058年,則受命九年即前1050年,亦與前面所推的前1050年為文王五十年崩的結(jié)果一致。由此推斷,前1058年,實(shí)為武王五年和武王受命之年,而假托為文王四十二年和文王受命之年。
《漢書·律歷志》:“《洪范》篇曰:惟十有三祀,王訪于箕子。自文王受命而至此十三年,歲亦在鶉火,故《傳》曰:歲在鶉火,則我有周之分野也。師初發(fā),以殷十一月戊子,日在析木箕七度,故《傳》曰:日在析木。是夕也,月在房五度。房為天駟,故《傳》曰:月在天駟。后三日得周正月辛卯朔,合辰在斗前一度,斗柄也,故《傳》曰:辰在斗柄。”顯然,《漢書·律歷志》是以受命之年為元年來解釋“《洪范》篇曰惟十有三祀”的。以受命元年為前1058年,則十三年即前1046年。用天文軟件復(fù)驗(yàn),前1047年7月至前1046年6月,確實(shí)是歲在鶉火。《史記·宋微子世家》:“箕子朝周,過故殷墟,感宮室毀壞,生禾黍,箕子傷之,欲哭則不可。”按《史記·宋微子世家》記載,箕子朝周之后武王崩?!督癖局駮o(jì)年》:“武王十六年,箕子來朝。”以武王元年為前1062年,則十六年為前1047年。前1047年,即殷亡后五年,無人維護(hù)的故殷墟宮室已顯凋敝,時(shí)間恰當(dāng)。而箕子遠(yuǎn)道而來,路上也要幾個(gè)月,在中國(guó)住上幾個(gè)月至明年返回也是理當(dāng),故前1046年武王訪于箕子,時(shí)間上也是符合的。如此說來,《洪范》的“惟十有三祀”,可能還真的是以受命之年為元年的,可見武王紀(jì)年之亂。但是,《漢書·律歷志》而后又把“十有一年,武王伐紂”也當(dāng)作了“武王伐殷,歲在鶉火”,這是把武王十一年與《洪范》的十三年算作了同一年。這只能解釋這是按文王受命二年崩來算的,這樣武王十一年正好是受命十三年。這顯然是把文王克殷二年崩,這不可能,就改成了受命二年崩了。這樣就得出了受命之年、克殷之年、訪箕子之年等都是歲在鶉火,由此而誤導(dǎo)了不少后人[17]。又由于“辰在斗柄”必在亥月,以此推得的克商之日自然也是在冬季,此亦誤導(dǎo)了不少后人,以至于涌現(xiàn)出了“武王伐紂,雪深丈余”(《舊唐書·禮儀志》引《六韜》)和“庚辰有七尺之厚,甲子有一丈之深”(《周書·劉璠傳》載劉璠《雪賦》)等浪漫作品來。若真雪深丈余,古人如何行軍打仗?《今本竹書紀(jì)年》:“帝辛五十一年冬十一月戊子,周師渡孟津而還?!卑础督癖局駮o(jì)年》,帝辛五十二年與第一個(gè)武王十一年是同年。故此年為武王十年,此日應(yīng)當(dāng)是前1053年11月16日,陰歷亥月十二戊子,是為殷歷十一月。但按照第二個(gè)武王十一年算,此年亦為武王九年。《史記·周本紀(jì)》:“九年,武王上祭于畢。東觀兵,至于盟津?!?。諸侯皆曰:紂可伐矣。武王曰:女未知天命,未可也。乃還師歸?!贝耸录c“十一月戊子周師渡孟津而還”事件,實(shí)際上是發(fā)生在同一年,應(yīng)該是同一件事。由此可知,《漢書·律歷志》的“殷十一月戊子”之日不是牧野之戰(zhàn)的發(fā)兵之日,而是上一年“周師渡孟津”之日。
綜上所述,“歲在鶉火,月在天駟,日在析木之津”應(yīng)該為前1058年11月29日,此日實(shí)際上是武王受命和立誓伐紂之日,或此年是武王伐紂開始之年,而假托為文王受命之年。
《淮南子·兵略訓(xùn)》:“武王伐紂,……彗星出而授殷人其柄。”
許多學(xué)者都認(rèn)為此彗星即哈雷彗星。哈雷彗星平均周期約76年,其回歸年份,張鈺哲定在前1057年,Yeomans 等定在前1059年,張鈺哲和張培瑜也認(rèn)為Yeomans等的計(jì)算更精確[18]。
《今本竹書紀(jì)年》:“帝辛三十二年,五星聚于房?!?/p>
《太平御覽》引《春秋緯·元命苞》:“殷紂之時(shí),五星聚于房。”
《帝王世紀(jì)》:“文王在豐,九州諸侯咸至,五星聚于房?!?/p>
《隋書·天文志》:“五緯入房,啟姬王之肇跡?!薄爸軐⒎ゼq,五星聚房?!?/p>
《宋書·符瑞志》:“文王夢(mèng)日月著其身,又鸑鷟鳴于岐山。孟春六旬,五緯聚房?!薄耙蟮蹮o道,虐亂天下。星命已移,不得復(fù)久。靈祇遠(yuǎn)離,百神吹去。五星聚房,昭理四海?!?/p>
《新論》(嚴(yán)可均輯本):“甲子,日月若合璧,五星若連珠,昧爽,武王朝至于商郊牧野,從天以討紂,故兵不血刃而定天下?!?/p>
前1100年至前1010年期間的五星聚天象列表如表8所示[3]。
表8 五星聚天象出現(xiàn)的日歷列表
前1059年是哈雷彗星回歸年,前1058年為受命之年,因而,前1059年春季出現(xiàn)的五星聚天象,最符合帝辛和文王年代的那次五星聚。只是前1059年出現(xiàn)的是五星聚于井,而不是傳說中的五星聚于房。
前1059年內(nèi)接連出現(xiàn)罕見的五星聚和哈雷彗星天象,這對(duì)于迷信天象的古人來說,是一件天大的事。周人應(yīng)該是很好地利用了這些罕見的奇異天象,經(jīng)過精心準(zhǔn)備,至前1058年受命立誓伐商,又經(jīng)過長(zhǎng)期的戰(zhàn)爭(zhēng)準(zhǔn)備和輿論宣傳,至前1052年已能夠聯(lián)合起了諸多友邦參加伐商,也最終成功蠱惑了迷信的殷人臨陣倒戈不戰(zhàn)而潰,使牧野之戰(zhàn)成了兵不血刃的一日之戰(zhàn)。
有關(guān)五星聚天象,多數(shù)記載都認(rèn)為是出現(xiàn)在帝辛和文王年代,也就是在牧野之戰(zhàn)之前好幾年,因而前1059年是符合的。唯有《新論》認(rèn)為五星連珠天象是出現(xiàn)在牧野之戰(zhàn)的甲子日,但這并沒有合適的天文學(xué)年份可予以對(duì)應(yīng),所以應(yīng)該屬于附會(huì),與克商之年也是歲在鶉火的情況一樣。
《尸子》:“武王伐紂,魚辛諫曰:歲在北方不北征。武王不從?!?/p>
《荀子·儒效》:“武王之誅紂也,行之日以兵忌,東面而迎太歲,……?!?/p>
《淮南子·兵略訓(xùn)》:“武王伐紂,東面而迎歲,……?!?/p>
利簋銘文:“珷征商,隹(唯)甲子朝,歲鼎,克聞(昏)夙又(有)商?!!盵19]
前1052年至前1051年間木星位置列表如表9所示。
表9 前1052年至前1051年間木星位置
如表9所列,前1052年1月木星在女宿,年中經(jīng)虛宿,至12月到危宿,而女、虛、危三宿皆屬北方玄武,故有“魚辛諫曰:歲在北方不北征”,但“武王不從”,依然出征伐紂。前1052年10月28日至前1051年1月28日,歲星僅出現(xiàn)在西方,而太歲與之反向運(yùn)行是在東方,按周師出發(fā)之日是在前1052年秋(10月底),故有“武王之誅紂也,行之日以兵忌,東面而迎太歲”。前1051年3月1日之后,歲星僅出現(xiàn)在東方,只要牧野之戰(zhàn)是在3月1日之后,就會(huì)有“武王伐紂,東面而迎歲”。
至于利簋銘文,其釋義歷來分歧很大,其中僅把“歲鼎”釋為天象的就有許多觀點(diǎn)。張政烺釋“歲,歲星,即木星。鼎,讀為丁,義即當(dāng)?!瓪q鼎意謂歲星正當(dāng)其位”[19],戚桂宴釋“歲鼎是歲星當(dāng)空,表示吉兆,歲即歲星,鼎訓(xùn)為當(dāng)”[20],趙誠(chéng)釋歲鼎為“歲貞,即通過祭祀進(jìn)行貞問”[20],李學(xué)勤釋“歲鼎之鼎,當(dāng)讀為貞。貞訓(xùn)為正。歲星之正,即其中天”[21],張培瑜[22]、劉次沅[3]、江曉原等[16]皆贊同為“歲星中天”。曹漢剛[23]、張秋芳[24]等根據(jù)銘文風(fēng)格而考證利簋為成王時(shí)期之器。如果利簋為成王時(shí)期之器,則其銘文“歲鼎”兩字應(yīng)無“貞”之義,而釋義為“歲星當(dāng)空,表示吉兆”最為恰當(dāng)。又,鼎原為烹飪之器,亦用作祭祀禮器,而兼有光大顯赫之意,故“歲鼎”亦可釋為“歲星當(dāng)空,清晰可見,光大顯赫”。經(jīng)過推排,牧野之戰(zhàn)之日是為前1051年4月16日,陰歷二月廿五甲子,此日拂曉前的歲星最高高度已達(dá)17°(北辰高度約為34°),整個(gè)天空除了一輪殘?jiān)轮鉀]有其他行星,孤獨(dú)而明亮的歲星當(dāng)空高懸清晰可見,非常顯眼也是非常顯赫、非常吉兆,可謂“歲鼎”。
各家在復(fù)原武王伐紂日期時(shí),出現(xiàn)不同方案和分歧,究其緣由主要是源自兩個(gè)不同解釋:
一是對(duì)行軍天數(shù)的解釋,即自戊午師逾孟津至甲子會(huì)于牧野,期間相隔是7天還是67天。如果7天,就難以同時(shí)滿足月相和四月丁未的記載,因此應(yīng)為67天。
二是對(duì)歲在鶉火的解釋,即歲在鶉火是指武王伐紂克商之年還是武王伐紂開始之年。如果是武王伐紂克商之年,就難以同時(shí)滿足其他天象和日期記載,因此應(yīng)為武王伐紂開始之年。
因此,以符合古籍和金文中所記載的各條與武王伐紂相關(guān)的日期和天象為原則,經(jīng)過全面分析、釋讀和推排,推斷武王十一年是連續(xù)使用了兩年,由此而復(fù)原出文王至成王年表,如表10所示,復(fù)原出武王伐紂克商日程,如表11所示。
表10 文王至成王年表
表11 武王伐紂克商日程
續(xù)表11 武王伐紂克商日程
由此得出結(jié)論,武王伐紂立誓之日,是在前1058年11月29日,即“歲在鶉火,月在天駟,日在析木之津”之日,而武王伐紂克商之日,是在前1051年4月16日,即武王十一年庚寅二月(卯月)廿五甲子;或者說,武王伐紂開始之年即受命之年為前1058年,武王伐紂克商之年為前1051年。