用陰曆求日干支比較困難,陽曆可參考以下舊文:
前言:一般人對於西曆元旦日干支大多依賴萬年曆,或查表,香港緣生網站已經有人
以民國年數導出速算口訣,確實好用,不過如要推200年以前的元旦日干支,就不夠
用了,為解決此小缺憾,特整理以西曆儒略曆及格勒哥里曆(簡稱格里曆)適用的心
算法發表,目的是使人能一見西曆年月日,就能以簡單算數算出日干支.
一.儒略周日:若知每年1月1日前一天的儒略周日(基數),則當年任何一日的儒略周
日皆可算得.日干支=[(儒略周日-10)/60]R,R代表取餘數,R=0則R=60
公式如下:
格里曆(自西元1582年10月15日儒略周日2299161起行,英國自1752年9月14日儒略
周日2361222起行)
DC=西元年數,BC=西元前年數,Y=6401-BC
儒略周日基數=(DC-1)*365+[(DC-1)/4]Q-[(DC-1)/100]Q+[(DC-1)/400]Q+1721425
儒略周日基數=(Y-1)*365+[(Y-1)/4]Q-[(Y-1)/100]Q+[(Y-1)/400]Q-616127
Q代表取整數.
置閏之法
1.DC或Y可被4整除但不可被100整除為閏年,2月29天,其餘為平年,2月28天.
2.DC或Y可被400整除者為閏年.
儒略曆(曆元西元前45年1月1日儒略周日1704987至西元1582年10月4日儒略周日
2299160止)(英國至1752年9月2日儒略周日2361221止)
儒略周日基數=(DC-1)*365+[(DC-1)/4]Q+1721423
儒略周日基數=(Y-1)*365+[(Y-1)/4]Q-616177
置閏之法,DC或Y可被4整除整除為閏年,2月29天,其餘為平年,2月28天.
1.例如求2001年9月8日格里曆日干支為何?
2001/4=500餘1,故知為平年
儒略周日基數=(2001-1)*365+[(2001-1)/4]Q-[(2001-1)/100]Q+[(2001-1)/400]Q+1721425
=2451910
9月8日儒略周日=2451910+31+28+31+30+31+30+31+31+8=2452161
[(2452161-10)/60]R=11甲戌日
2.求西元前551年9月28日格里曆(孔子誕辰)日干支?
Y=6401-551=5850 ,5850/4=1462餘2,故知為平年
儒略周日基數=(5850-1)*365+[(5850-1)/4]Q-[(5850-1)/100]Q+[(5850-1)/400]Q-616127
=1520176
9月28日儒略周日=1520176+31+28+31+30+31+30+31+31+28=1520447
[(1520447-10)/60]R=37庚子日
3.漢太初元年正月初一日癸亥.*儒略曆*西元前104年2月22日
Y=6401-104=6297平年
儒略周日基數(6297-1)*365+[(6297-1)/4]Q-616177
=1683437
2月22日儒略周日=1683437+31+22=1683490
[(1683490-10)/60]R=0癸亥日
二.如不須知儒略周日,可化簡求算日干支
以格里曆為例
干支基數B=[{(DC-1)*5+[(DC-1)/4]R-[(DC-1)/100]R+[(DC-1)/400]R+15}/60]R
或 B=[{(Y-1)*5+[(Y-1)/4]R-[(Y-1)/100]R+[(Y-1)/400]R+3}/60]R
例1.求西元1967年3月25日日干支?平年
干支基數B
=[{(1967-1)*5+[(1967-1)/4]R-[(1967-1)/100]R+[(1967-1)/400]R+15}/60]R
={[9830+491-19+4+15]/60}R
=(10321/60)R
=1
日干支=1+31+28+25=85,85-60=25戊子日
為免逐月計算麻煩,可先列表如下:
****1月2月3月4月5月*6月*7月*8月*9月*10月11月12月
平年0**+31+59+90+120+151+181+212+243+273+304+334
閏年0**+31+60+91+121+152+182+213+244+274+305+335
例2.1985年12月22日日干支?
B=36,平年,36+334+22=392,392-60*6=32乙未日
例3.1899年3月8日日干支?
B=5,平年,5+59+8=72,72-60=12日干支為乙亥.
以上要用到計算器,且仍太複雜,以下介紹的可以用心算.
陽曆求干支速算公式
A.格里曆
Y=DC-1;C=(Y/100)Q,取整數加1即世紀數.Y2=西曆年之個十兩位數-1=(Y/100)R
K=世紀年干支基數
C/4=M....餘數R
K=15-3M-16R+-60n,n為正整數.
DC年干支基數=Y2*5+(Y2/4)Q+K+-60n
Y2*5這項Y2可先減去12的倍數,如12,24,36,48,60,72,84,96等等
例一.西元1958年,Y=1958-1=1957,C=19,Y2=57,C/4=19/4=4...餘3,M=4,R=3
K=15-3*4-16*3=-45,-45+60=15
1958年干支基數=57*5+(57/4)Q+15=(57-48)*5+14+15=45+14+15=74,74-60=14
例二.西元1700年,Y=1700-1=1699,C=16,Y2=99,C/4=4...餘0,M=4,R=0
K=15-3*4-16*0=15-12=3
1700年干支基數=99*5+(99/4)Q+3=(99-96)*5+24+3=15+24+3=42
B.儒略曆
Y=DC-1;C=(Y/100)Q,取整數加1即世紀數.Y2=西曆年之個十兩位數-1=(Y/100)R
K=世紀年干支基數
C/4=M....餘數R
K=13-15R+-60n
DC年干支基數=Y2*5+(Y2/4)Q+K+-60n
例一.西元1582年,Y=1582-1=1581,C=15,Y2=81,C/4=3...餘3,R=3
K=13-15*3=-32,-32+60=28
1582年干支基數=81*5+(81/4)Q+28=(81-72)*5+20+28=45+20+28=93,93-60=33
例二.西元1000年,Y=1000-1=999,C=9,Y2=99,C/4=2...R=1
K=13-15*1=-2
1000年干支基數=99*5+(99/4)Q-2=(99-96)*5+24+3=15+24-2=37,元旦日干支=38
辛丑.
元旦日的干支是干支基數加1即是.西元前的算法取Y=6401-BC,K的公式格里曆時
改為K=3-3M-16R+-60n,儒略曆時則與西元後的公式相同.
每月之日干支序數SH公式(月數>=3)
格里曆/儒略曆,平年,奇數月SH=(月數/2)Q+28-30+D,當月數>=9時,SH要加1
偶數月SH=(月數/2)+28+D,...D為日數.
閏年,上面兩式中之28改為29
2月之SH=31+D,1月之SH=D
求任一日的日干支=當年干支基數+SH
接下來提供一些算例,以加深印象.
1.韓信-240.10.6(酉時生)(儒略曆)
6401-240=6161平年
61 ->13-15=-2
61 ->60 ->15
10月,10/2+28+6=39
日干支=-2+15+39=52乙卯
2.關羽160.8.15(申時生)(儒略曆)
1 ->13-15=-2,閏年(由160判斷,以下同)
60 ->59 ->55+14=69 ->9
8月,8/2+29+15=48
日干支=-2+9+48=55戊午
3.諸葛孔明181.8.20(巳時生)(儒略曆)
1 ->13-15=-2,平年
81 ->80 ->40+20=60 ->0
8月,8/2+28+20=52
日干支=-2+52=50癸丑
4.韓愈768.8.18(辰時生)(儒略曆)
7 ->13-15*3=-32,閏年
68 ->67 ->35+16=51
8月,8/2+29+18=51
日干支=-32+51+51=70 ->10癸酉
5.邵康節1012.1.21(戌時生)(儒略曆)
10 ->13-15*2=-17,閏年
12 ->11 ->55+2=57
1月,21
日干支=-17+57+21=61 ->1甲子
6.司馬光1019.11.17(儒略曆)
10 ->13-15*2=-17,平年
19 ->18 ->30+4=34
11月,5+1+28-30+17=21
日干支=-17+34+21=38辛丑
7.王安石1021.12.18(辰時生)(儒略曆)
10 ->13-15*2=-17,平年
21 ->20 ->40+5=45
12月,6+28+18=52
日干支=-17+45+52=85 ->25戊子
8.蘇軾1037.1.8(卯時生)(儒略曆)
10 ->13-15*2=-17,平年
37 ->36 -> 9
1月,8
日干支=-17+9+8=0 ->癸亥
9.秦檜1091.1.17(午時生)(儒略曆)
10 ->13-15*2=-17,平年
91 ->90 ->30+22=52
1月,17
日干支=-17+52+17=52乙卯
10.岳飛1103.3.31(巳時生)(格里曆)
11 ->15-3*2-16*3=-39,平年
3 ->2 ->10
3月,1+28-30+31=30
日干支=-39+10+30=1甲子
11.朱熹1130.10.18(午時生)(儒略曆)
11 ->13-15*3=-32,平年
30 ->29 ->25+7=32
10月,5+28+18=51
日干支=-32+32+51=51甲寅
12.成吉思汗1155.5.1(午時生)(格里曆)
11 ->15-3*2-16*3=-39,平年
55 ->54 ->30+13=43
5月,2+28-30+1=1
日干支=-39+43+1=5戊辰
13.文天祥1236.6.6(子時生)(儒略曆)
12 ->13,閏年
36 ->35 ->55+8=63 ->3
6月,3+29+6=38
日干支=13+3+38=54丁巳
14.劉伯溫1311.7.1(午時生)(儒略曆)
13 ->13-15=-2,平年
11 ->10 ->50+2=52
7月,3+28-30+1=2
日干支=-2+52+2=52乙卯
15.明成祖1360.5.2(酉時生)(儒略曆)
13 ->13-15=-2,閏年
60 ->59 ->55+14=69 ->9
5月,2+29-30+2=3
日干支=-2+9+3=10癸酉
16.洪承疇1593.10.16(戌時生)(格里曆)
15 ->15-3*3-16*3=-42,平年
93 ->92 ->40+23=63 ->3
10月,5+28+16=49
日干支=-42+3+49=10癸酉
17.鄭成功1624.8.28(格里曆)
16 ->15-3*4=3,閏年
24 ->23 ->55+5=60 ->0
8月,4+29+28=61 ->1
日干支=3+1=4丁卯
18.清聖祖1654.5.4(辰時生)(格里曆)
16 ->15-3*4=3,平年
54 ->53 ->25+13=38
5月,2+28-30+4=4
日干支=3+38+4=45戊申
19.和坤1750.9.30(午時生)(格里曆)
17 ->15-3*4-16=-13,平年
50 ->49 ->5+12=17
9月,4+28-30+1+30=33
日干支=-13+17+33=37庚子
20.蔣宋美齡1898.3.4(寅時生)(格里曆)
18 ->15-3*4-16*2=-29,平年
98 ->97 ->5+24=29
3月,1+28-30+4=3
日干支=-29+29+3=3丙寅
21.余登發1904.9.21(午時生)(格里曆)
19 ->15-3*4-16*3=-45 ->15,閏年
4 ->3 ->15
9月,4+29-30+1+21=25
日干支=15+15+25=55戊午
22.2001.9.13(格里曆)
2000,以2001年判斷平年,以2000年計算日干支
日干支=4+28+1-30+13=16己卯
23.2001.12.28(格里曆)
2000
日干支=6+28+28=62 ->2乙丑
結語:以上計算解決了推算日干支的難題,如再製成表格,按表推算亦屬簡易.
干支是由十天干1甲.2乙.3丙.4丁.5戊.6己.7庚.8辛.9壬.10癸.
及十二地支1子.2丑.3寅.4卯.5辰.6巳.7午.8未.9申.10酉.11戌.12亥.組成.
因此只要看數字的個位數就是天干,地支則熟記12,24,36,48,60...等數字,如
看到43,即用36為減數,43-36=7午,43個位數為3,知天干為3丙,故知為丙午.
西曆紀元前的日干支求法,除了已介紹的用6401減年份之算法外,還可用以下
公式求解:
Y=BC-1,C=世紀數-1=(Y/100)Q
C/4=M...餘R
格里曆,係數A=30+3*M+16*R+-60n
儒略曆,係數A=28+15*R+-60n
個十兩位數Y2,以4n*100+1-Y2決定平年.閏年.
格里曆或儒略曆係數B=(100-Y2)*5+[(100-Y2)/4]Q
月.日,同西元後算法得E
日干支=A+B+E+D,D為日期
例1.西元前551年9月28日格里曆,求日干支?
前6世紀,5/4=1...餘1,以801-551=350判別為平年
A=30+3+16=49
B=(100-51)*5+[(100-51)/4]Q=5+12=17
E=4+1-2+28=31
日干支=49+17+31=97 ->37庚子
例2.西元前1864年9月10日,儒略曆,求日干支?
前19世紀->18/4=4...餘2
A=28+15*2=58
B=(100-64)*5+(100-64)/4=9
E=4+1-2+10=13
日干支=58+9+13=80 ->20 癸未
心算紀日支法(易友林雨菡友情提供)
要按公曆心算任意一天的紀日支,只需將公曆年號乘以5、加公曆年號除以4、加上9
、加上日期,再加已經過去了幾個大月,得數便是支序號。如月份是雙數,則間隔
30天,使用此法一律以3月1日作為當年的起點,日期在3月1日以前,年號按上年論。
公曆大月從3月起。依次為3、5、7、8、10、12、1七個。
所謂支序號便是60花甲的次序,如甲子為1、乙丑為2,直至壬戌為59,癸亥為60。
在使用中,可牢記甲子為1,甲戌為11,甲申為21,甲午為31,甲辰為41,甲寅為51
,再依此順序,將序號化為支。此法可用歌訣概括如下:
乘五除四九加日,雙月間隔三十天。
三五七八十尾頭,此為妙法記心間。
例1:1949年10月1日,
年號49*5=245,扣除60的倍數後余5.
年號49/4=12, 常數為9,日期為1,共遇3、5、7、8四個大月,月份為雙數.按訣
心算:5+12+9+1+4-30=1,則1949年10月1日為甲子。
例2:1919年5月4日.
年號19*5=95,扣除60的倍數後余35.
年號19/4=4,常數為9,日期為4,隻遇3月一個大月,月份為單數.
按訣心算:35+4+9+4+1=53,則1919年5月4日為丙辰。
例3:1964年2月27日.
因日期在3月前年號以63年論,63*5=315,扣除60的倍數後余15,63/4=15,常數為9,
日期為27,共遇7個大月,月份為雙數.
按訣心算:15+15+9+27+7-30=43,則1964年2月27日為丙午。
最後說明一點,下個世紀使用此法,年號一律加上100,如2000年以100論,2013年
以113論。
年干支=西元年數-3+-60n
年干支=民國年數-12+-60n
年干支=58-西元前年數+-60n
年干支=49-民前年數+-60n