古今曆法概述(八)中國農曆干支與公元紀年互推

如何互推公元紀年與干支紀年?

我們在閱讀古文獻時會見到這樣的問題:

某個年份用干支紀年,需要推定其公元紀年;

或是某個年份公元紀年已知,需要推定其干支紀年。

先說第一種情況:我們在古文獻小測試第二十三期就有相關分析(分析(廿三)),開頭的己卯年是分析問題的關鍵,因此我們需要搞清楚己卯年是哪一年。

第二種情況則是,為了知道己卯年是哪一年,我們先要知道這是哪個己卯年,因為干支六十一輪迴,中國歷史上有數十個己卯年。因為這段文獻中間提到了西遼,那麼我們首先就要知道西遼的上下限約為1123-1218年,這樣我們就可以先推算這兩個起止年的干支,來推算己卯年大致在什麼時代,進一步確定己卯年是1219年。

那麼我們接下來就來分天乾和地支來分析這件事。

首先,上期我們介紹,農曆年和公曆年每年都一一對應,而農曆年的正月初一一般在公曆1月-2月開頭(個別情況特殊),末尾會有一部分到第二個公曆年,因此,一般說來,如果某事件發生在農曆正月至十月,在公元前104年,也就是漢武帝太初改歷以後,這一事件應在此農曆年的對應公曆年中。我們舉個例子:

(後晉)天福八年秋七月丁丑朔,京師雨水深三尺。

《舊五代史》

後晉天福八年對應於公元943年,這一年七月的事件,應在公元943年內。這一天是公元943年8月4日。

但是如果到了農曆一年的年尾,這件事就不好說了。一個例子是:

末代皇帝愛新覺羅·溥儀退位於公元1912年2月12日,1912年內農曆的正月初一在2月18日,也就是說,按照農曆來看,還沒有到宣統四年清朝就結束了,2月12日是宣統三年的十二月廿五日。

溥儀晚年照,圖片來自網路。按照傳統曆法的計算,他實際只做了三年皇帝。

古代農曆紀年中的干支,我們在前面已經簡單介紹過。由於公元紀年是十進位,而天干也是十個,所以公元紀年的尾數和干支紀年中的天干有這樣一個對應關係:

公元元年(1年,西漢平帝元始元年)以後:

甲 4  乙 5  丙 6  丁 7  戊 8

己 9  庚 0  辛 1  壬 2  癸 3

這是什麼意思呢?今年2018年,戊戌年,公元紀年的尾數8和干支紀年的天干戊相對應。準確地來說,在正常以寅月為正月(以雨水為中氣)的農曆曆法中,一個公元年對應兩個天干,2018年對應的是丁(丁酉年,雞年)和戊,開頭的一小部分時間是丁,後面一大半時間都是戊。這裡我們近似看作完全對應,所以直接用對應年的天干來匹配公元紀年的尾數。

公元前:

甲 7  乙 6  丙 5  丁 4  戊 3

己 2  庚 1  辛 0  壬 9  癸 8

例如秦始皇統一天下在公元前221年,此年對應的農曆年就是庚年(干支為庚辰年)。

那有朋友就說錯了,你看,公元1年是個天干為辛的年份,公元前1年是個天干為庚的年份,中間還有個公元0年,沒有天干可以對應,是庚還是辛呢?

這就涉及到公曆的問題了,公元紀年裡面沒有公元0年。

然而,地支和公元紀年就沒有這樣的匹配關係。這是個很頭疼的事情。舉個我們日常生活中的例子,我們問某人屬什麼(生肖匹配地支),此人報了屬相後,我們算起來總是不那麼順利。首先,我們要想一下今年是什麼屬相,或者如果這位朋友的屬相和自己的屬相相同或者前後腳(比如自己屬馬,這位朋友屬蛇或是羊),我們就會拿自己的出生年份去對一個同屬相的年份,比如我屬兔,這位朋友屬虎,我的出生年份是1987年,那先找到1986年大約對應虎年,再看大致歲數推定到底是1986年,還是1974、1998、或是什麼差12的整數倍的年份。

由於地支是「12進位」的演算法,因此我們在推算一些較久遠的歷史年代時,就比較麻煩。不過之前我們曾經有一份最近十二年和地支對照的表。因此我們在推算時,可以根據最近十二年的情況,通過對公元紀年數字加減12的倍數來推算其地支。對於歲月較遠的時代,我們可先以300年為一個單位加減,然後以60年為單位加減。這樣有一個好處,因為以60為單位減公元紀年,60恰好一甲子,天干都不必看尾數,直接套用近幾年的干支。如果仍相差較大,就以12為單位加減,到所求年的前後12年為止,然後推這一年是多少。

舉個例子:公元1418年,明永樂十六年。這一年干支是戊戌,因為2018-1418=600,是60的整數倍。如果不放心天干是否算對,看尾數為8,因此是戊。

下面我們隨便舉一個數。公元300年,晉太康元年。

首先,我們用300去加300,加到2100(300+6*300=2100);

然後,我們減兩個60,減到1980(2100-2*60=1980);

如果您是1980年出生的(注意不是這一年農曆正月初一以前生的,否則生肖要後推一個),那麼您很幸運,按照自己的屬相就能推出這一年是什麼地支。但有人表示我是90後,80年代的屬相完全不知道。那麼我們加個12,1980+1*12=1992。有人又說我是00後,你說的90年代我也不清楚。不要緊,再加個12,1992+12=2004,要麼就再加12,2004+12=2016。有人表示我還是不記得了,那都是前年的屬相了,我連我自己屬什麼都不清楚。好吧(苦笑),那您總該知道今年是什麼年吧。那很多人就反應過來了,這我知道,老外都知道今年是什麼年。2018年是個狗年。那反推吧,2017是雞年,2016對應是個猴年。於是公元300年對應農曆年的地支就是申。最後我們用尾數法推算天干應該是庚。於是這一年就是庚申年。

1999年上海辭書出版社《辭海》附錄中國歷史紀年表局部。注意這裡的干支和公元紀年都是大致對應的,而不是完全吻合。

這方法太笨。有朋友一定會說。

是的,有時用這種方法的確太笨。我推算公元300年對應農曆年的干支需要這麼費勁,推算1552年的干支如果還這麼算就很傻了。嗯?難道這一年有什麼妙招?確實有。說破只不過是個小伎倆,這裡分享給大家。

原因不在於1552年有什麼奧秘,而是在於距其不遠的1550年。這一年明朝發生了庚戌之變。庚戌就是這一年的干支。既然1550年是庚戌,那麼直接推兩年,1551年是辛亥(1911也是辛亥,1911-1551=360=60*6),1552年是壬子。

類似的還有1644年,我們知道有一篇著名的文章《甲申三百年祭》,這個甲申說的就是明朝滅亡的1644年對應的農曆年干支。而到了近代,甲午戰爭、戊戌變法、庚子賠款、辛丑條約、辛亥革命等等,都是當年的干支。利用這些已知公元年份的干支,可以作為輔助而儘快推算某年的干支。

不過這裡還有一個問題。先看下面這個例子:

公元前841年共和元年,這一年是什麼干支?

首先我們就要加300的倍數。我們可以把公元前看作負數,前841年就是-841年。於是加到1859年(或2159年),

-841+9*300=1859,

或是-841+10*300=2159;

然後發現差的很遠,於是再加減60的倍數,得到1979(1859+2*60=1979)或2039(2159-2*60=2039);

發現差的還是有點遠,再加減12的倍數,得到2015(1979+3*12=2039-2*12=2015),

最後推出這一年是個羊年(地支為未)。

好!那就按照前面那個表看天干。公元前尾數1對應庚,那麼這一年就是庚未年。完畢。錯啦,大錯特錯。我們在前面介紹干支曾說,陽乾和陰支、陰乾和陽支不可能匹配,庚是陽干(排第七,奇數,單數),未是陰支(排第八,偶數,雙數),不可能出現庚未這樣的干支。

那麼究竟錯在什麼地方呢?我們前面說過,沒有公元0年。有朋友就說,沒有就沒有唄,有什麼影響呢?影響大了。我們數學中的整數加減法,是有0加入的,1和-1差2;但是公元紀年的加減法就不一樣了,1和-1差1,所以,前面所得2015,算少了,需要加1,也就是2016,猴年,於是公元前841年應為庚申。

所以這裡要注意的是,換算公元以前年份的對應干支,最後需要以公元後年份加1推算其地支。


推薦閱讀:

中國古代四大神獸——青龍、白虎、朱雀、玄武
日曆網 傳統日曆查詢工具 中國歷史朝代公元對照表
中國古代神異獸全集(二)上古神獸

TAG:中國 | 曆法 | 農曆 | 干支 | 概述 |