APP下载

武王伐纣日期的新推定

2020-06-08金宇飞

商丘职业技术学院学报 2020年1期
关键词:武王甲子天象

金宇飞

(上海材料研究所,上海 200437)

两千年来,历代学者根据各自对文献和西周历法的理解,提出了至少44种武王克商之年的假说,跨度从公元前1130年至公元前1018年[1],[2]38-39。《夏商周断代工程》综合利用古文献和西周青铜器铭文(金文)的记载,结合考古测年和天文学,推定武王克商之日是在前1046年1月20日[2]46-49。但是,前1046年方案是正月建亥和戊午在二月[3],与古文献记载不符,这就留下了很大的破绽。此后又陆续出现了对武王伐纣之年的各种不同见解[4-8],至今各种分歧依然存在。因而,似有必要再做检讨,修订或重新复原武王伐纣日期,以符合古籍和金文中的记载。

一、成王元年的确认

《史记·鲁周公世家》记鲁公伯禽之后的年数为:考公有四年,炀公有六年,幽公有十四年,魏公有五十年,厉公有三十七年,献公有三十二年,真公有三十年,武公有九年,懿公有九年,伯御有十一年,孝公有二十七年,惠公有四十六年。《汉书·律历志》引《世家》记鲁公伯禽之后的年数为:考公有四年,炀公有六十年,幽公有十四年,微公有五十年,厉公有三十七年,献公有五十年,慎公有三十年,武公有两年,懿公有九年,柏御有十一年,孝公有二十七年,惠公有四十六年。其中“炀公有六十年”“献公有五十年”“武公有两年”等年数与现今版本的《史记·鲁周公世家》不同。

另外,《汉书·律历志》也记载了若干位鲁公的日期,利用《寿星天文历》等天文日历软件进行推排,得到其对应的日历,如表1所示。

表1 《汉书·律历志》中记载的鲁公日期所对应的日历

表1所对应的日历,符合西周初年是以朏(新月,约当初二、初三)为月首[2]19,[9]21,也符合《鲁历》的正月建子。表1显示的朔旦冬至,其冬至日皆在“朔”后三日或四日,不知出现这种规律化现象是何缘故。但不管怎样,至少这些日期是存在的。

根据表1所列日期推算可得,惠公元年为前768年,懿公元年为前815年,献公元年为前886年,微公元年为前973年。唯有炀公元年为前990年无甚意义,考虑到前971年亦出现朔旦冬至,如果假定是当时的记录者或抄录者把年份弄混了,则选取前971年为炀公二十四年,炀公元年为前993年,这一结果比较有意义。而惠公之后是隐公,隐公元年按《春秋》所记载的推算为前722年,对此年份各家皆无异议。

由此可复原出鲁公世家早期年表,如表2所示。

表 2 鲁公世家年表(早期)

再依据《汉书·律历志》“鲁公伯禽,推即位四十六年”,由此可得,鲁公伯禽元年为前1043年或前1042年。《汉书·律历志》认为,鲁公伯禽即位之年亦即成王元年,则成王元年亦为前1043年或前1042年。

《夏商周断代工程》依据《尚书·周书·召诰》“惟二月既望,越六日乙未,王朝步自周,则至于丰。惟太保先周公相宅,越若来三月,惟丙午朏。”和《史记·鲁周公世家》“成王七年二月乙未,王朝步自周,至丰,使太保召公先之雒相土。其三月,周公往营成周雒邑,卜居焉,曰吉,遂国之。”推排出成王七年二月乙未为前1036年2月27日寅月廿二乙未,继而推断成王元年为前1042年[2]28-29。

由此可见,现今版本的《史记·鲁周公世家》是正确的,而鲁公伯禽元年如果与成王元年是同一年的话,应为前1042年。

而成王日历也显然是正月建丑,与鲁历的正月建子不同,西周初年的日历是正月建丑。

《世本》:“炀公徙鲁。”炀公徙鲁可能发生在炀公六年,翌年幽公在原籍即位,从而形成两位鲁公并存且各自纪年。《史记·鲁周公世家》:“幽公十四年,幽公弟晞杀幽公而自立,是为魏公。”或许,幽公也是逐炀公而自立。这样就可以解释,虽然炀公有60年,但是,6年以后的年数与幽公、魏公等的年数是并行的。

由此推测,《汉书》虽然注明是引用《世家》,却可能又同时参考了其他资料,且只顾引用不做验证,这也许是古人著述引用的传统做法,不能以当今的做法来审视过去。如此,依靠引用汇集而成的《古本竹书纪年》,其保持的资料原始性也就不一定完全可靠了。

二、武王伐纣的天数

武王伐殷,往伐归兽,识其政事,作《武成》。《尚书·周书·武成》:“惟一月壬辰旁死魄。越翼日癸巳,王朝步自周,于征伐商。厥四月哉生明,王来自商,至于丰。乃偃武修文,归马于华山之阳,放牛于桃林之野,示天下弗服。丁未,祀于周庙,邦甸侯卫骏奔走执豆笾。越三日庚戌柴望,大告武成。”《武成》又回顾了武王伐殷日程:“既戊午,师逾孟津。癸亥,陈于商郊,俟天休命。甲子昧爽,受率其旅若林,会于牧野。”

《国语·周语》:“昔武王伐殷……王以二月癸亥夜陈,未毕而雨。”

对于武王伐殷日程,自戊午师逾孟津,至甲子会于牧野,其间相隔几天,历来有两说:

一是以《史记·周本纪》为代表,认为自戊午至甲子为67天;二是以《汉书·律历志》为代表,认为自戊午至甲子为7天。

《史记·周本纪》:“十一年十二月戊午,师毕渡盟津,诸侯咸会。”而《汉书·律历志》依据《尚书·周书·泰誓》:“惟十有一年,武王伐殷。一月戊午,师渡孟津。”一个是“十二月戊午”,一个是“一月戊午”,两者显然不同。

由此,《史记·周本纪》是十二月戊午至二月甲子为67天,而《汉书·律历志》是一月戊午至二月甲子为7天。现将两种观点的日程列表如下,如表3所示。

表3 武王伐殷日程的两种观点和日期推排

由于自壬辰至戊午相隔有26天,如果都出现在同一个月内,必定是壬辰在月初,戊午在月末,而癸亥也就自然出现在下个月的月初了,《汉书》就是如此安排的。但是,由于自癸亥至丁未相隔为44天或104天,如果癸亥出现在二月初,那么,丁未只能出现在三月中旬或五月中旬,绝无可能出现在四月。因此,《汉书》就设想在二月至四月之间有一个闰月,使得丁未可以在四月出现。但是,《汉书》显然是按照汉时的历法在推想,却没想到在殷商和西周的历法中并没有闰月之名,而是直接使用数字连续纪月,即如果是闰二月,就顺序称之为三月,直到年末有十三月,或称之为年终置闰[2]19,[9]19-20。因此,《汉书》设想的通过加一个闰月来解决四月丁未的困惑是不符合史实的。

尽管两千年来,《汉书》的方案一直影响巨大,包括《夏商周断代工程》在内的多数武王伐纣方案都秉承了7天说。但是,在参照了殷周金文中的历法资料后,就可知其破绽是显而易见的。而且,按照《汉书·律历志》所设想的武王伐殷日期,在前1200年至前1000年间的日历上也是不存在的或未见有完全符合的。

《逸周书·世俘解》也记载了一些武王伐纣的日期:“维四月乙未日,武王成辟,四方通殷,命有国。惟一月丙午旁生魄,若翼日丁未,王乃步自于周,征伐商王纣。”“越若来二月既死魄,越五日甲子,……,丁卯,……。戊辰,……,壬申,……。辛巳,……。甲申,……。辛亥,荐俘殷王鼎。武王乃翼,矢慓矢宪,告天宗上帝。……。壬子,……。癸丑,……。甲寅,……。乙卯,……。”“庚子,……。乙巳,……。时四月既旁生魄,越六日庚戌,武王朝,至燎于周,……。若翼日辛亥,祀于位,用籥于天位。……。越五日乙卯,……。”

按文中的日期顺序,自丙午至甲子,相隔为18天。因而,只有当丙午是在一月下半月,甲子才有可能出现在二月,并且很大可能是在二月上半月,这样就不符合丙午旁生魄和既死魄甲子的记载。而要让丙午旁生魄是在上半月,既死魄甲子是在下半月,那么丙午和甲子必然落在同一个月内,那么一月丙午和二月甲子的表述显然是自相矛盾的。又,自甲子经辛亥和庚子至庚戌,相隔为106天,此天数为整整三个半月。因而,如果甲子是在二月下半月,那么庚戌最早只能出现在六月;如果甲子是在二月上半月,那么庚戌最早也只可能出现在五月。由此可知,当甲子是在二月,庚戌是不可能出现在四月的。因此,《逸周书·世俘解》所记载的日期是不可能的或者是混乱的。若要解决这些混乱,只能假设《逸周书·世俘解》是由不同来源的至少3篇文章汇编而成,且其原始资料各自采用的是不同历法,即年首的正月不同,这些混乱正是由于不同文章各述各的日期所致。

综上所述,《汉书·律历志》所设想的武王伐纣日期是不存在的,《史记·周本纪》和《武成》记载的武王伐纣日期可能是符合现实的,而《逸周书·世俘解》记载的武王伐纣日期是混乱的和需要重新编排的。

三、武王伐纣的年份

两千年来,在诸多的武王伐纣之年假说中,影响最大的是前1122年说和前1027年说。

前1122年说,出自黄宗羲(清)的《历代甲子考》:“鲁公伯禽四十六年,考公四年,炀公六十年,幽公十四年,微(《史记》作魏)公五十年,厉公三十七年,献公五十年,愼公三十年,武公两年,懿公九年,伯御十一年,孝公二十七年,惠公四十六年,凡伯禽至惠公三百八十六年。伯禽以成王元年癸巳岁卽位,至康王十六年戊寅薨。……。由成王上推,周公摄政七年,武王克殷后七年而崩,故伐纣之岁,断以为己卯也。”《历代甲子考》所推断的这个己卯年即前1122年,即以惠公末年为前723年,上推386年再加14年所得。而《历代甲子考》的鲁世家年数,是引用自《汉志》(《汉书》)。前已证明《汉书》给出的鲁世家年数有误,故以此而推断出来的武王伐纣之年为前1122年也就是不可信的。

前1027年说,出自《古本竹书纪年》“自武王灭殷,以至于幽王,凡二百五十七年”。通常以幽王末年为前771年,上推257年,即得出武王灭殷是在前1027年。按照前1027年说,则西周年数是大大减少,这就很难同时满足《史记·周本纪》等诸多古籍中记载的“成康之际,天下安宁,刑错四十余年不用”和“穆王立五十五年”。而若要满足成康“四十余年”,则必然要减少穆王在位年数[5],这是前1027年说的两难之处。

此外,前1122年说和前1027年说,也与成王元年为前1042年相差太大。

《古本竹书纪年》:“十一年庚寅,周始伐商。”《今本竹书纪年》:“帝辛五十二年庚寅,周始伐殷。秋,周师次于鲜原。冬十有二月,周师有事于上帝。庸、蜀、羌、髳、微、卢、彭、濮从周师伐殷。”“武王十二年辛卯,王率西夷诸侯伐殷。”“夏四月,王归于丰,飨于太庙。”《竹书纪年》的这些记载与《史记·周本纪》“十一年十二月戊午,师毕渡盟津,诸侯咸会”等是一致的。

所谓“周始伐殷。秋,周师次于鲜原”,应该理解为大队先行,并且是在武王十一年庚寅秋。“冬十有二月”,也应该是在武王十一年庚寅。而“王率西夷诸侯伐殷”,是在武王十二年辛卯。这也表明了,武王应该是在大队渡过黄河后才出征伐殷,这与武王伐纣天数的分析也是相容的。

但是,《泰誓》的“惟十有一年,武王伐殷。一月戊午,师渡孟津”,显然与《史记·周本纪》和《竹书纪年》等是不一致的。“戊午”究竟是在“十一年十二月”还是在“十一年一月”?

如果认为两者都没有错,那就只有一种可能,即武王克商后是更改了历法,也就是更改了年首正月。综合有关武王伐纣的文献记载,考虑到成王日历为正月建丑,还有西周金文显示的西周历法主要是正月建子、建丑[2]19,再考虑到《史记·周本纪》记载的周人祖先为夏后稷,因而周人可能会沿用夏历,因此推测:武王克商后,是将十二月改成了一月,即将原来是按照夏历的正月建寅,改成了按照殷历的正月建丑。这可能也是周人以此来表明其可以作为殷商的正统继承者的一种体现。

这样就可以解释,由于发生了这次改历,导致新旧文献中的日期出现了不一致。《史记·周本纪》采用的显然是《武成》之类的旧文献,而《泰誓》应该是改历后的新文献,可能是在武王十三年修改过和最终定稿的。

但是,十一年十二月更改为一月,应该是十二年一月,可《泰誓》里却仍为十一年一月。这里可能隐藏了一个重大失误,即武王十一年十二月改为一月,却没有改年号,这样,武王十一年很可能是连续用了两年。

所以在《今本竹书纪年》中,既有武王“十二年辛卯,王率西夷诸侯伐殷”,又有“武王灭殷,岁在庚寅”这样相互矛盾的记载。显然这是后人将武王十二年(辛卯年)灭殷的事,算在了庚寅年(武王十一年)。由此可见,不仅武王十一年连续用了两年,庚寅年也同样连续用了两年。

再看《古本竹书纪年》的“自武王灭殷,以至于幽王,凡257年”,如果以幽王元年的前781年上推[4],则得到的结果是前1037年,这与前1051年刚好相差14年。或许,《古本竹书纪年》的257年只是统计了周王实际统治的年数,而未包含共和行政的14年。

四、文王和武王的年代

《汉书·律历志》引《春秋历》“周文王四十二年十二月丁丑朔旦冬至,孟统之二会首也。后八岁而武王伐纣”。经天文日历推排,前1200年至前1000年间,未见符合此条件的日子。唯有前1058年12月31日,恰逢子月初一与冬至同日,不过此日为丙午,并非丁丑。不过12月2日即上个月的亥月初一恰好是丁丑。这或许是《春秋历》所依据的原始资料,因漏简而造成了“丙午朔”等字的缺失,使得“朔旦冬至”的前面只见有“丁丑朔”了,以为就是“丁丑朔旦冬至”了。至于“十二月”,应该是后人只知西周是正月建丑,以为文王也应该是,继而在“丁丑朔旦冬至”前添加了“十二月”。如果按照前1058年为文王四十二年进行推算,则文王元年为前1099年。

《逸周书·小开》:“维三十有五祀,……,正月丙子,拜望,食无时。”查Sky Map Pro11天文软件中的月食表,得到丰镐地区(北纬34°13′0″,东经108°43′59″)可见月食的日历,如表4所示。

表4 丙子月食

以此推算,文王元年亦为前1099年,而且是正月建寅,符合前面的改历假设。

此外,武王伐纣已是武王十一年或十二年了,为何《汉书·律历志》是文王四十二年后八岁?这一混乱似乎可以印证《史记·周本纪》所记载的“武王自称太子发,言奉文王以伐,不敢自专”应该是史实,即武王即位后只是对内使用自己的年号,对外仍沿用文王的年号,并仍以文王的名义伐纣。以前1051年为第2个武王十一年,则武王元年为前1062年。以文王元年为前1099年,则文王实际在位37年,至克殷二年即前1050年正好为50年,这才公告文王崩,故文王名义在位50年,此公告也被各地史官各自记录在册而成为铁证。此后,克殷二年的文王崩,又与武王十一年伐纣克殷的史实交织在一起,最终被后世史家界定为克殷二年的文王崩当然应该是武王崩,太史公也被惑,并在《史记》中留下了“西伯盖即位50年”和“武王克殷二年崩”。而根据《尚书·周书·泰誓》“惟十有三年春,大会于孟津”,表明武王十三年还在,不止2年。再依据其他记载(当然有很多),又出现了武王年和四年说[10-12],古今都被惑了。

《汉书·律历志》:“成王元年正月己巳朔,此命伯禽俾侯于鲁之岁也。后三十年四月庚戌朔,十五日甲子哉生霸。故《顾命》曰:‘惟四月哉生霸,王有疾不豫,甲子,王乃洮沫水’,作《顾命》。翌日乙丑,成王崩。”

经天文日历推排,这些日期所对应的日历如表5所示。

表 5 《汉书·律历志》中记载的成王日期所对应的日历

得到的成王元年为前1045年,并不是前1042年。得到的后三十年为前1006年,而实际日历却是后四十年。

若以成王元年为前1042年,那前1006年恰好是成王三十七年,这与《今本竹书纪年》的记载正好吻合。

但依据《汉书·律历志》,成王元年却为前1045年。《今本竹书纪年》记载:“武王十七年冬十有二月,王陟。”以武王元年为前1062年,那么武王十七年就应该是在前1046年,刚好可以衔接成王元年的前1045年。

西周早期青铜器庚嬴鼎的铭文中有“廿又二年四月既望己酉”[13],经天文日历推排,此日即前1024年5月9日,阴历十七,当年正月建丑。推算其元年为前1045年,也刚好与成王元年为前1045年一致。

由此可知,前1045年和前1042年都是成王元年。这可能是各家对待成王元年的观点不同,有的认为前1045年已确定成王为继任者就应该算作成王纪年,而有的认为前1042年成王举行了即位仪式后才算。或许,这也可能是反映了武王崩后各家对周公摄政或篡权的不同态度。

如果前1045年为成王元年,那么到前1006年应该已是成王四十年了,而不是成王三十年。这可以认为《汉书》所依据的原始资料可能是把“卌”误当成“卅”了。

五、武王伐纣的天象

(一)岁在鹑火

《国语·周语》:“昔武王伐殷,岁在鹑火,月在天驷,日在析木之津,辰在斗柄,星在天鼋,星与日辰之位皆在北维。”

对其中所述天体的注释如表6所示。(表中的英文星名取自《中西对照恒星图表》[14])

表 6 《国语·周语》中所述天体注释

按天体运行规律,月亮是一个朔望月走完二十八星宿,大约每天经过一个星宿;太阳是一个回归年走完十二星次,大约每月经过一个星次,或者说在每个星次里要运行大约一个月;木星大约是十二年走完十二星次,大约每年经过一个星次,或者说在每个星次里要运行大约一年。二十八星宿和十二星次,是专用于定位月亮、太阳和木星的,并以此来纪日、纪月和纪年。用木星来纪年,故木星又称为岁星。由此可知,月亮每月都会有一天来到天驷(房宿);太阳每年都会有一个月在析木之次,即有立冬和小雪的那个月,三千年前时大约是在公历(太阳历)的11月9日至12月8日之间;木星大约每12年都会有一年在鹑火之次。因此,“岁在鹑火,月在天驷,日在析木之津”是一个明确记载有年月日的日期,如果缺少其中一个,譬如不考虑“岁在鹑火”,那就变成了每年都会有这一天。因而,把“月在天驷,日在析木之津”定在前1044年,却把“岁在鹑火”定在前1047年[15],是违背原意的拆分,所得结果必定是错误的,不符合其他天象和日期也是必然的。

此外,按黄经算,房宿至斗柄相距约30°,这样,月亮从天驷到斗柄需要走大约2.5天。因此,“月在天驷”和“辰在斗柄”的天象不会发生在同一天,两者相隔有二三天,所以《汉书·律历志》“后三日合辰”是正确解释。同样,按黄经算,斗宿至女宿相距约30°,而水星由于是在地球轨道内侧运行,且离太阳最近,所以从地球上看,水星与太阳的最大距离只有28°。因此,日月合朔即便是在析木之末的斗宿,水星也不可能同时出现在天鼋之首的女宿,即“辰在斗柄”和“星在天鼋”的天象也不会发生在同一天。由此可知,《国语·周语》所说的天象并不发生在同一天,而是对3次天象记录的汇总,即“岁在鹑火,月在天驷,日在析木之津”为第1次,后三日的“辰在斗柄”为第2次,又若干日出现的“星在天鼋”为第3次,而斗宿和女宿皆属于北方玄武,故谓“星与日辰之位皆在北维”。

按照上述理解,利用SkyMapPro11天文软件,即可推排出前1140年至前1000年期间,符合《国语·周语》所说天象的日历,如表7所示。

表7 符合《国语·周语》所说天象的可能日历

从表7可知,符合《国语·周语》所说天象的日期共有9个。唯有前1047年,由于恰逢水星与太阳同在女宿,因而在“日在析木”之后是见不到“星在女宿”天象的。再次明显可见水星,是在前1046年1月11日,而此时水星已到了危宿,即早过了女宿。或者按照韦昭所注而认为天鼋是玄枵之次[3],[16],包括了女、虚、危三宿,即星在女、虚、危三宿都是星在天鼋,等同于“星在玄枵”。但是,如果这样,那就等于说“星在天鼋”每年都可见,甚至是好几天,而且位置不定,区域较大,也就是说这是一个既平常又没有特征的天象,如此记录“星在天鼋”有什么意义呢?“星在玄枵”就像“月在玄枵”一样,是毫无意义的天象。而《汉书·律历志》“婺女天鼋之首”的解释就很有意义了,因为“星在女宿”不仅一年只有一天,而且还不一定每年都能见到,这与“辰在斗柄”也不是每年都会发生是一样的情况。这样,以距离斗宿最近的天鼋之首的女宿,作为“星在天鼋”,就与“辰在斗柄”的意义一样了,都是用唯一且难得的天象来补充说明和标定“岁在鹑火,月在天驷,日在析木之津”这一天的。因而,前1047年的天象并不完全符合《国语·周语》的意义。而在全部的10条中,唯有前1058年为最佳,出现的3次天象前后只有17天,这就最能符合《国语·周语》的天象及其记录的意义。

《帝王世纪》:“文王即位四十二年,岁在鹑火,文王于是更为受命之元年,始称王矣。”前已推排,文王四十二年即前1058年。而按照上表,前1058年也是岁在鹑火。《汉书·律历志》:“文王受命九年而崩”,若以受命之年为前1058年,则受命九年即前1050年,亦与前面所推的前1050年为文王五十年崩的结果一致。由此推断,前1058年,实为武王五年和武王受命之年,而假托为文王四十二年和文王受命之年。

《汉书·律历志》:“《洪范》篇曰:惟十有三祀,王访于箕子。自文王受命而至此十三年,岁亦在鹑火,故《传》曰:岁在鹑火,则我有周之分野也。师初发,以殷十一月戊子,日在析木箕七度,故《传》曰:日在析木。是夕也,月在房五度。房为天驷,故《传》曰:月在天驷。后三日得周正月辛卯朔,合辰在斗前一度,斗柄也,故《传》曰:辰在斗柄。”显然,《汉书·律历志》是以受命之年为元年来解释“《洪范》篇曰惟十有三祀”的。以受命元年为前1058年,则十三年即前1046年。用天文软件复验,前1047年7月至前1046年6月,确实是岁在鹑火。《史记·宋微子世家》:“箕子朝周,过故殷墟,感宫室毁坏,生禾黍,箕子伤之,欲哭则不可。”按《史记·宋微子世家》记载,箕子朝周之后武王崩。《今本竹书纪年》:“武王十六年,箕子来朝。”以武王元年为前1062年,则十六年为前1047年。前1047年,即殷亡后五年,无人维护的故殷墟宫室已显凋敝,时间恰当。而箕子远道而来,路上也要几个月,在中国住上几个月至明年返回也是理当,故前1046年武王访于箕子,时间上也是符合的。如此说来,《洪范》的“惟十有三祀”,可能还真的是以受命之年为元年的,可见武王纪年之乱。但是,《汉书·律历志》而后又把“十有一年,武王伐纣”也当作了“武王伐殷,岁在鹑火”,这是把武王十一年与《洪范》的十三年算作了同一年。这只能解释这是按文王受命二年崩来算的,这样武王十一年正好是受命十三年。这显然是把文王克殷二年崩,这不可能,就改成了受命二年崩了。这样就得出了受命之年、克殷之年、访箕子之年等都是岁在鹑火,由此而误导了不少后人[17]。又由于“辰在斗柄”必在亥月,以此推得的克商之日自然也是在冬季,此亦误导了不少后人,以至于涌现出了“武王伐纣,雪深丈余”(《旧唐书·礼仪志》引《六韬》)和“庚辰有七尺之厚,甲子有一丈之深”(《周书·刘璠传》载刘璠《雪赋》)等浪漫作品来。若真雪深丈余,古人如何行军打仗?《今本竹书纪年》:“帝辛五十一年冬十一月戊子,周师渡孟津而还。”按《今本竹书纪年》,帝辛五十二年与第一个武王十一年是同年。故此年为武王十年,此日应当是前1053年11月16日,阴历亥月十二戊子,是为殷历十一月。但按照第二个武王十一年算,此年亦为武王九年。《史记·周本纪》:“九年,武王上祭于毕。东观兵,至于盟津。……。诸侯皆曰:纣可伐矣。武王曰:女未知天命,未可也。乃还师归。”此事件与“十一月戊子周师渡孟津而还”事件,实际上是发生在同一年,应该是同一件事。由此可知,《汉书·律历志》的“殷十一月戊子”之日不是牧野之战的发兵之日,而是上一年“周师渡孟津”之日。

综上所述,“岁在鹑火,月在天驷,日在析木之津”应该为前1058年11月29日,此日实际上是武王受命和立誓伐纣之日,或此年是武王伐纣开始之年,而假托为文王受命之年。

(二)五星聚与彗星出

《淮南子·兵略训》:“武王伐纣,……彗星出而授殷人其柄。”

许多学者都认为此彗星即哈雷彗星。哈雷彗星平均周期约76年,其回归年份,张钰哲定在前1057年,Yeomans 等定在前1059年,张钰哲和张培瑜也认为Yeomans等的计算更精确[18]。

《今本竹书纪年》:“帝辛三十二年,五星聚于房。”

《太平御览》引《春秋纬·元命苞》:“殷纣之时,五星聚于房。”

《帝王世纪》:“文王在丰,九州诸侯咸至,五星聚于房。”

《隋书·天文志》:“五纬入房,启姬王之肇迹。”“周将伐纣,五星聚房。”

《宋书·符瑞志》:“文王梦日月着其身,又鸑鷟鸣于岐山。孟春六旬,五纬聚房。”“殷帝无道,虐乱天下。星命已移,不得复久。灵祇远离,百神吹去。五星聚房,昭理四海。”

《新论》(严可均辑本):“甲子,日月若合璧,五星若连珠,昧爽,武王朝至于商郊牧野,从天以讨纣,故兵不血刃而定天下。”

前1100年至前1010年期间的五星聚天象列表如表8所示[3]。

表8 五星聚天象出现的日历列表

前1059年是哈雷彗星回归年,前1058年为受命之年,因而,前1059年春季出现的五星聚天象,最符合帝辛和文王年代的那次五星聚。只是前1059年出现的是五星聚于井,而不是传说中的五星聚于房。

前1059年内接连出现罕见的五星聚和哈雷彗星天象,这对于迷信天象的古人来说,是一件天大的事。周人应该是很好地利用了这些罕见的奇异天象,经过精心准备,至前1058年受命立誓伐商,又经过长期的战争准备和舆论宣传,至前1052年已能够联合起了诸多友邦参加伐商,也最终成功蛊惑了迷信的殷人临阵倒戈不战而溃,使牧野之战成了兵不血刃的一日之战。

有关五星聚天象,多数记载都认为是出现在帝辛和文王年代,也就是在牧野之战之前好几年,因而前1059年是符合的。唯有《新论》认为五星连珠天象是出现在牧野之战的甲子日,但这并没有合适的天文学年份可予以对应,所以应该属于附会,与克商之年也是岁在鹑火的情况一样。

(三)岁星与太岁

《尸子》:“武王伐纣,鱼辛谏曰:岁在北方不北征。武王不从。”

《荀子·儒效》:“武王之诛纣也,行之日以兵忌,东面而迎太岁,……。”

《淮南子·兵略训》:“武王伐纣,东面而迎岁,……。”

利簋铭文:“珷征商,隹(唯)甲子朝,岁鼎,克闻(昏)夙又(有)商。……。”[19]

前1052年至前1051年间木星位置列表如表9所示。

表9 前1052年至前1051年间木星位置

如表9所列,前1052年1月木星在女宿,年中经虚宿,至12月到危宿,而女、虚、危三宿皆属北方玄武,故有“鱼辛谏曰:岁在北方不北征”,但“武王不从”,依然出征伐纣。前1052年10月28日至前1051年1月28日,岁星仅出现在西方,而太岁与之反向运行是在东方,按周师出发之日是在前1052年秋(10月底),故有“武王之诛纣也,行之日以兵忌,东面而迎太岁”。前1051年3月1日之后,岁星仅出现在东方,只要牧野之战是在3月1日之后,就会有“武王伐纣,东面而迎岁”。

至于利簋铭文,其释义历来分歧很大,其中仅把“岁鼎”释为天象的就有许多观点。张政烺释“岁,岁星,即木星。鼎,读为丁,义即当。……岁鼎意谓岁星正当其位”[19],戚桂宴释“岁鼎是岁星当空,表示吉兆,岁即岁星,鼎训为当”[20],赵诚释岁鼎为“岁贞,即通过祭祀进行贞问”[20],李学勤释“岁鼎之鼎,当读为贞。贞训为正。岁星之正,即其中天”[21],张培瑜[22]、刘次沅[3]、江晓原等[16]皆赞同为“岁星中天”。曹汉刚[23]、张秋芳[24]等根据铭文风格而考证利簋为成王时期之器。如果利簋为成王时期之器,则其铭文“岁鼎”两字应无“贞”之义,而释义为“岁星当空,表示吉兆”最为恰当。又,鼎原为烹饪之器,亦用作祭祀礼器,而兼有光大显赫之意,故“岁鼎”亦可释为“岁星当空,清晰可见,光大显赫”。经过推排,牧野之战之日是为前1051年4月16日,阴历二月廿五甲子,此日拂晓前的岁星最高高度已达17°(北辰高度约为34°),整个天空除了一轮残月之外没有其他行星,孤独而明亮的岁星当空高悬清晰可见,非常显眼也是非常显赫、非常吉兆,可谓“岁鼎”。

六、结语

各家在复原武王伐纣日期时,出现不同方案和分歧,究其缘由主要是源自两个不同解释:

一是对行军天数的解释,即自戊午师逾孟津至甲子会于牧野,期间相隔是7天还是67天。如果7天,就难以同时满足月相和四月丁未的记载,因此应为67天。

二是对岁在鹑火的解释,即岁在鹑火是指武王伐纣克商之年还是武王伐纣开始之年。如果是武王伐纣克商之年,就难以同时满足其他天象和日期记载,因此应为武王伐纣开始之年。

因此,以符合古籍和金文中所记载的各条与武王伐纣相关的日期和天象为原则,经过全面分析、释读和推排,推断武王十一年是连续使用了两年,由此而复原出文王至成王年表,如表10所示,复原出武王伐纣克商日程,如表11所示。

表10 文王至成王年表

表11 武王伐纣克商日程

续表11 武王伐纣克商日程

由此得出结论,武王伐纣立誓之日,是在前1058年11月29日,即“岁在鹑火,月在天驷,日在析木之津”之日,而武王伐纣克商之日,是在前1051年4月16日,即武王十一年庚寅二月(卯月)廿五甲子;或者说,武王伐纣开始之年即受命之年为前1058年,武王伐纣克商之年为前1051年。

猜你喜欢

武王甲子天象
天象奇观
问鼎
南北半球天象
问鼎
“武王攻击纣尸”的原由探析
奇异的天象
沈鹏《迎戊戌双甲子》
大孔树脂纯化马甲子五环三萜类成分的工艺研究
齐白石画作中的甲子记岁法
天下责任与先秦诸子学说的内在差异