舊文重貼:因干支並不代表農曆,只是中國紀日法,因此題目要改改.
舊文:
原命題是陰陽曆換算捷法,討論的是陽曆求日干支法,本人試就後者提供較完整的解答.
一.儒略周日:若知每年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日干支為乙亥.
年干支=西元年數-3+-60n n為0或整數
年干支=民國年數-12+-60n
年干支=58-西元前年數+-60n
年干支=49-民前年數+-60n
簡化:
陽曆求干支速算公式(利用干支基數再加自1月1日起算的日數求干支)
A.格里曆
Y=DC-1;C=(Y/100)Q,取整數亦即世紀數.Y2=西曆年之個十兩位數-1=(Y/100)R
K=世紀年干支基數
C/4=M....餘數R
K=15-3M-16R+-60n
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,取整數亦即世紀數.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
元旦日的干支是干支基數加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甲子
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乙丑
西曆紀元前的日干支求法,除了已介紹的用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論。