乾支換算方法

乾支換算方法

乾支是天干和地支的組合。天干有十個,即甲、乙、丙、丁、戊、己、庚、辛、壬、癸;地支有十二個,即子、醜、寅、卯、辰、巳、午、未、申、酉、戌、亥。天干和地支從“甲子”開始,按順序逐一相配,各用到最後一個時,再從第一個開始繼續相配,就形成了六十個乾支,也稱“六十花甲子”。 而公曆紀元法簡稱公元,是國際通行的紀年體系,以傳說中耶穌基督的生年為公曆元年,相當於中國西漢平帝元年。 乾支換算一般指乾支紀年與公曆紀年間的換算。

乾支紀日

乾支紀日,60日大致合2個月一個周期;一個周期完了重複使用,周而復始,循環下去。確定的文獻指出乾支紀日始於魯隱公三年夏曆二月己巳日(公元前720年2月10日)。
因為儒略曆的平年有365日,而每4年一次,公元年能被4整除,閏年有366日,平均一年365.25日,所以4年1461日和一甲子的60日,最低公倍數是29220日,合80年。這就是說,每80年,乾支紀日對應的儒略曆月日日期會反覆一次循環。(公元4年本來應為閏年,但因為公元前45年開始實施儒略曆後,“每隔3年”加一次閏日被誤為“每3年”加一次閏日,所以羅馬皇帝屋大維下令前5年、前1年、4年停閏以修正錯誤置閏。)
因為公曆的平年有365日,而每4年一次,公元年能被100但非400整除,閏年有366日,平均一年365.2425日,所以400年146097日和一甲子的60日,最低公倍數是2921940日,合8000年。這就是說,每80年,乾支紀日對應的公曆月日日期若沒有遇到能被100但非400整除的公元年,會反覆一次循環,但整體而言,假設未來從不改公曆,每8000年,乾支紀日對應的公曆月日日期才會反覆一次完整的循環。1912年(中華民國元年)2月18日,合農曆壬子年正月初一,以及1992年2月18日,都是是“甲子日”。

換算口訣

口訣

乘五除四九加日,
雙月間隔三十天。
一二自加整少一,
三五七八十尾前。

注釋

第三句中的“整少一”,為能被4整除之年一二月份比其他三年都要少加一;

第四句反映的是大月規律,即8月加3、11月加5,依此類推。

換算方法

乾支是天干和地支的組合。天干有十個,即甲、乙、丙、丁、戊、己、庚、辛、壬、癸;地支有十二個,即子、醜、寅、卯、辰、巳、午、未、申、酉、戌、亥。天干和地支從“甲子”開始,按順序逐一相配,各用到最後一個時,再從第一個開始繼續相配,就形成了六十個乾支,也稱“六十花甲子”。

乾支序號互推

根據乾支的構成條件,其循環周期必然是天干數和地乾數的最低公倍數。而60正是10和12的最低公倍數。
如果我們把“甲子”編為1號,“乙丑”編為2號,這樣編下去,就可以得到一個乾支和序號的對照表,如下:

六十甲子
天干 地支123456789101112
1甲子
乙丑
丙寅
丁卯
戊辰
己巳
庚午
辛未
壬申
癸酉
甲戌
乙亥
2丙子
丁丑
戊寅
己卯
庚辰辛巳
壬午
癸未甲申
乙酉丙戌
丁亥
3戊子
己丑
庚寅
辛卯
壬辰
癸巳
甲午
乙未
丙申
丁酉
戊戌
己亥
4庚子
辛丑
壬寅
癸卯
甲辰
乙巳
丙午
丁未戊申己酉庚戌辛亥
5壬子癸丑甲寅乙卯丙辰丁巳戊午己未庚申辛酉壬戌癸亥

由序號得到對應乾支是很容易的,序號除以10的餘數就是天干的序數(如果餘數是0,則為最後一個天干癸),序號除以12的餘數就是地支的序數(如果餘數是0,則為最後一個地支亥)。比如37號乾支,因為37 mod 10=7(mod表示取餘數),對應的天干是庚,37 mod 12=1,對應的地支是子,所以37號乾支就是庚子。
顯然,一個整數除以10的餘數就是它的個位數,這就使求天干更方便了。
而由乾支推它的序號,也不困難。這其實就是一個同餘方程組的求解問題,用初等數論中的中國剩餘定理就可以解決。比如要算戊午的序號是多少,根據上面由序號得到對應乾支的原理,易得如下方程組:
{ x mod 10 = 5
{ x mod 12 = 7.
其中x是待求的乾支序號。根據中國剩餘定理,有:
x ≡ 6 * 5 - 5 * 7 (mod 60) = 55,
即戊午的序號是55.這和上面的對照表的是一致的。一般地,若天干的序號為m,地支的序號為n,則乾支的序號為:
x ≡ 6m - 5n (mod 60) (1)
如果6m-5n的結果是正數,這個數就是乾支的序號;如果是負數,把它加上60就是乾支的序號。

年乾支的求算

需要說明的是,乾支紀年紀的是農曆年,而不是公曆年。但因為農曆年的歲首和公曆年的歲首相隔較近,使農曆年總是和某一公曆年的大部分重合,因此,通常也用公曆年的年份表示和它大部分重合的農曆年。這樣就很容易給出農曆年的乾支序號為:
x = (Y-3) mod 60, (2)
其中Y是年份。得到了乾支序號x,就可以求出相應的乾支來。比如2004年的乾支序號:
x = (2004-3) mod 60 = 2001 mod 60 = 21,
21 mod 10=1,天干為甲,21 mod 12=9,地支為申,因此,2004年是甲申年。
用Y-3直接除以10,就可以得到天干,用Y-3直接除以12,就可以得到地支。這是因為
x = (Y-3) mod 60等價於Y-3 = 60 * n + x,

其中n是Y-3除以60的商數。等式兩邊同時除以10,餘數也必然相等。而右邊第一項是60的倍數,自然也是10的倍數,能夠被10整數,於是Y-3除以10的餘數就必然等於x除以10的餘數。因此,其實我們完全用不著先求乾支的序號,而可以分別求天干和地支,合起來就是乾支,這樣就減少了一步運算。而對於年份的天干,同樣只須看末尾一位。末尾為4的年份的天干總是甲,末尾為5的年份的天干總是乙……依次類推。

月乾支的求算

月乾序=(所求年尾數+2)*2+月份(取尾數)

月支序=月份+2(大於12的時候減去12)

例:2015年5月份的乾支是多少?

月乾序=(5+2)*2+5=19取尾數9,則乾序是壬;

月支序=5+2=7,則支序是午。則2015年5月份的乾支是壬午。

日乾支的求算

仿照星期的求算,得到一個比較直觀的計算日乾支的公式如下:
G = (Y-1)*5 + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D + 15, (3)
其中Y是年份,D是累積天數,[...]表示取商數,也就是只取計算結果的整數部分。把G除以60,餘數就是乾支的序號。或者把G除以10或12,可以直接得到日天干和日地支。不過,和形式相似的求星期的公式一樣,這個公式還不夠簡煉,特別是第一項(Y-1)*5,在Y為四位數年份時,計算出來的結果是一個較大的四位數或五位數,口算很不方便。用推導蔡勒公式的辦法,可以改進這個公式。先來看和年份有關的部分的改進。
按公曆的置閏規則,一個世紀的總天數可能是36524天,或36525天。如果這個世紀中末尾為00的年份是閏年,這個世紀就只有36525天;否則就只有36524天。不妨稱有36524天的世紀為“平世紀”,有36525天的世紀為“閏世紀”。對於平世紀,因為36524 mod 60 = 44,所以,每過一個平世紀,同一天的乾支就向後推進44個序號。同樣,每過一個閏世紀,同一天的乾支就向後推進45個序號。這就得到一個計算每個世紀第一年(年份末尾為01)3月1日的公式:

G = 44C + [C/4] + 15, (4)
其中C是世紀數減一。
而計算任一年3月1日的乾支的公式也可以很快得到:
G = 44C + [C/4] + 5(y-1) + [y/4] + 15,即
G = 44C + [C/4] + 5y + [y/4] + 10, (5)
其中y是年份後兩位數字。
下面再列出每月天數:

月份1月2月3月4月5月6月7月8月9月10月11月12月
天數3128(29)31303130313130313031

減30後的剩餘天數 1 -2(-1) 1 0 1 0 1 1 0 1 0 1
如果把1月和2月看成是上一年的13月和14月,同樣可以得到下面的式子:
D’ ≡ [3*(M+1) / 5] + d - 2 (mod 10) (6)及
D’ ≡ [3*(M+1) / 5] + d - 2 + i (mod 12) (奇數月i=0,偶數月i=6), (7)
其中,D’是從3月1日開始算起的累積天數,M是月份,d是日數。把(6)(7)兩式和(5)式合起來,再進行適當的化簡,就得到了計算公曆任意一天的天干和地支的公式:
g = 4C + [C/4] + 5y + [y/4] + [3*(M+1) / 5] + d - 3; (8)
z = 8C + [C/4] + 5y + [y/4] + [3*(M+1) / 5] + d + 7 + i (奇數月i=0,偶數月i=6),(9)
如果先求得了g,那么
z = g + 4C + 10 + i (奇數月i=0,偶數月i=6). (10)
g的個位數就是天干序號,z除以12的餘數就是地支序號。這裡需要再次強調:1月和2月是當做上一年的13月和14月來算的,因此C和y也要按上一年的年份來取值。
把(8)(9)兩式和蔡勒公式對比一下:
W = -2C + [C/4] + y + [y/4] + [13*(M+1) / 5] + d - 1,
可以看出它們的形式非常相似,區別僅僅是幾個常數的不同。
儘管現在中國已經不用乾支紀日了,但有時還是需要計算日乾支的。比如,曆法有所謂“三伏”和“入梅”“出梅”,都和日乾支有關。三伏包括初伏、中伏和末伏,是指夏天最熱的一段時間,入梅和出梅是指江南一帶梅雨季節的開始和結束,本來是和氣候有關的用語。但因為古代沒有準確的天氣預報,無法準確預測三伏和入出梅的時間,所以就在曆書上硬性規定幾個日子作為三伏開始和入出梅的日子,這樣確定一個大致的日期以備參考。現在雖然有了比較準確的天氣預報,但三伏和入出梅作為一種傳統曆法,仍然流傳下來。
曆法規定夏至之後的第三個庚日為初伏開始,共十天;第四個庚日為中伏開始,十天或二十天;立秋之後的第一個庚日為末伏開始,共十天。中伏的長度之所以不固定,是因為夏至、立秋的日期和庚日的日期是逐年浮動的,立秋之後的第一個庚日可能是夏至之後的第五個庚日,也可能是第六個庚日。如果是前者,中伏就只有十天;如果是後者,中伏就長達二十天。注意如果夏至當天是庚日,夏至之後第一個庚日是指夏至之後第十天,而不是夏至當天,這時初伏第一天就是夏至之後第三十天。同樣,如果立秋當天是庚日,末伏第一天就是立秋之後第十天,而不是立秋當天。入梅則是指芒種之後的第一個丙日,出梅是指小暑之後的第一個未日,也有同樣的規定。

知道了這些,我們可以算一下2004年的初伏、中伏和末伏都是什麼日子。這需要先知道夏至和立秋的日子。如果知道夏至是6月21日,立秋是8月7日,那么運用公式(8),夏至這天的g為:
g = 4 * 20 + [20/4] + 5*4 + [4/4] + [3*(6+1) / 5] + 21 - 3
= 80 + 5 + 20 + 1 + 4 + 21 - 3
= 128,
個位數是8,天干是辛。夏至之後第三個庚日就是夏至之後第29天,也就是7月20日,這天也就是初伏第一天。中伏第一天則是7月30日。同樣可算出立秋這天的g為:
g = 4 * 20 + [20/4] + 5*4 + [4/4] + [3*(8+1) / 5] + 7 - 3
= 80 + 5 + 20 + 1 + 5 + 7 - 3
= 115,
是個戊日。立秋之後第一個庚日就是立秋之後第2天,也即8月9日,這天就是末伏第一天。由此也可知,2004年的中伏只有十天。同樣可以由芒種和小暑兩節氣的日期,算出2004年的入梅日和出梅日分別是6月6日和7月15日。

年份日期求算

反過來,知道了年乾支和日乾支,求相應的年份和日期就相對麻煩一點了。因為乾支是循環使用的,所以必須先知道欲求對應年份和日期的乾支是屬於哪一次循環。比如我們預先用公式(2)算出來1864、1924、1984年都是甲子年,如果要知道戊戌變法是哪一年,首先要確定它是十九世紀末的事情,也即是屬於1864年開始的這一個循環里。那么,我們用公式(1)可以算出來戊戌的序號是35,於是戊戌年就是(1864-1)+35=1898年。之所以要先減一,是因為甲子的序號為1,需要把這個序號先減去。

至於日乾支,因為古書里的日乾支總是和年、月配合使用的,所以不難確定它屬於哪個循環。比如《明史·莊烈帝本紀》記載明崇禎皇帝朱由檢在煤山自縊的日子是崇禎十六年三月丁未。崇禎十六年就是公元1644年。三月雖然是農曆的三月,但我們知道農曆的日期在公曆里雖然是浮動的,但也不出一定的範圍,比如農曆三月初一,總是在公曆3月22日到4月19日之間浮動。因此,先來算1644年3月22日的乾支。有:
g = 4 * 16 + [16/4] + 5 * 44 + [44/4] + [3*(3+1) / 5] + 22 - 3
= 64 + 4 + 220 + 11 + 2 + 22 - 3
= 320,
個位數是0,
z = g + 4C + 10
= 320 + 64 + 10
= 394,
除以12餘10,所以這一天的乾支是癸酉,其序號為6*0-5*10+60=10。而丁未的序號是6*4-5*8+60=44,在癸未之後34天,因此三月丁未肯定是3月22日之後34天,即4月25日。這就是說,崇禎自縊的日子是1644年4月25日,這和查萬年曆的結果是一致的。

乾支與公曆換算

從已知的公曆年份計算乾支紀年:年份數減3,除以10的餘數是天干,除以12的餘數是地支。
從已知日期計算乾支紀日的公式為:
g = 4C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d - 3
z = 8C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d + 7 + i
其中奇數月i=0,偶數月i=6,C是世紀數減一,y是年份後兩位,M是月份,d是日數。1月和2月按上一年的13月和14月來算。[ ]表示取整。g除以10的餘數是天干,z除以10的餘數是地支。

換算實例

例一:1996年1月16日
(96×5+96÷4+9+16)÷60=8餘49,49即為六十甲子序數。9對應天干壬,49除12餘1對應地支子,對應乾支為“壬子”。
例二:1997年2月16日
(97×5+97÷4+9+16+30+2)÷60=9餘26,26即為六十甲子序數。6對應天干己,26除12餘2對應地支醜,對應乾支為“己丑”。
例三:1998年3月16日
(98×5+98÷4+9+16)÷60=8餘59,對應乾支為“壬戌”。
例四:1999年4月16日
(99×5+99÷4+9+16+30+1)÷60=9餘35,對應乾支為“戊戌”。
例五:2000年7月16日
(100×5+100÷4+9+16+2)÷60=9餘12,對應乾支為“乙亥”。
例六:20001年10月16日
(101×5+101÷4+9+16+4+30)÷60=9餘49,對應乾支為“壬子”。

相關詞條

熱門詞條

聯絡我們