公历日干支计算法 知道公历日期就可以快速计算得到当天的日干支是多少的。 从1601年起被4除尽的是闰年,整百被400除尽是闰年, 公元1601年1月1日干支是丁卯 卯1丁1顺 天干丁1戊2己3庚4辛5壬6癸7甲8乙9丙10 地支卯1辰2巳3午4未5申6酉7戌8亥9子10丑11寅12 注意10,12是除尽无余数 干支基数=5*(y-1601)+(y-1601)/4-(y-1601)/100+(y-1601)/400+r y是1601年起的所求年数 r是所求日是从当年的1月1日起的总天数 用所得的干支基数与10相除求余数从丁1戊2...丙10得天干 用所得的干支基数与12相除求余数从卯1辰2...寅12得地支 比如2000年12月31日干支是多少? 5*(2000-1601)+(2000-1601)/4-(2000-1601)/100+(2000-1601)/400+366 =5*399+99-3+0+366 =2457 2457%10=7 癸 2457%12=9 亥 比如2001年3月7日干支是多少? 5*(2001-1601)+(2001-1601)/4-(2001-1601)/100+(2001-1601)/400+31+28+7 =2163 2163%10=3 己 2163%12=3 巳 比如2021年3月17日干支是多少? 5*(2021-1601)+(2021-1601)/4-(2021-1601)/100+(2021-1601)/400+31+28+17 =5*420+420/4-420/100+420/400+31+28+17 =5*420+105-4+1+31+28+17 =2278 2278%10=8 甲 2278%12=10 子 公元5年到公元1600年,是每四年闰一日在2月 干支基数为=5*(y-5)+(y-5)/4+r y是5年起的所求年数 r是所求日是从当年的1月1日起的总天数 用所得的干支基数与10相除求余数从戊1己2...丁10得天干 用所得的干支基数与12相除求余数从戌1亥2...酉12得地支 比如1200年3月4日干支是多少? 5*(1200-5)+(1200-5)/4+31+29+4 =6337 6337%10=7 甲 6337%12=1 戌 公元5年之前的历法在现代的历书中与实际的有出入。 干支基数公式暂时不提供。 对应在没有万年历或无法翻阅万年历的时候,掌握公历日干支计算得到日干支是有一定帮助作用的。 比如某人报说他高祖出生于公历1901年3月26日丑时 不用翻历书就可以自动得出四柱对应的干支是多少的: 庚0辛1...戊8己9得1901是辛年 (1901-3)%12 余2 子1丑2...戌11亥12 得1901是丑年 1901就是辛丑年 3月26日在惊蛰和清明之间是卯月,丙辛遁月从庚寅起,卯月是辛卯 3月26日干支基数是=5*(1901-1601)+(1901-1601)/4-(1901-1601)/100+(1901-1601)/400+31+28+26=1500+75-3+0+31+28+26=1657 1657%10=7 丁1戊2...癸7 得日天干是癸 1657%12=1 卯1辰2... 得日地支是卯 3月26日时癸卯 戊癸遁时从壬子起,丑时是癸丑 也就是高祖1901年3月26日丑时 对应的干支时间就是 辛丑年辛卯月癸卯日癸丑时 天干地支连珠格 这样就不用翻历书就得到干支相关的信息了。 附之前掌握的日干支计算公式 日干支公式 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 c是世纪减一,y是年后两位,M是月,d是日,奇数月i为0偶数月i为6 1和2月使用13,14来代替,因此C和y也要按上一年的年份来取值. []表示取整数 甲0子0顺 1720年5月6日 4*17+[17 / 4] + 5*20 + [20 / 4] + [3 * (5 + 1) / 5] + 6 - 3 = 3 8*17+[17/4]+5*20+[20/4]+[3*(5+1)/5]+6+7+0=9 日干支就是丙申 1720年5月26日 4*17+[17/4]+5*20+[20/4]+[3*(5+1)/5]+26-3 = 3 8*17+[17/4]+5*20+[20/4]+[3*(5+1)/5]+26+7+0= 5 日干支就是丙辰 1981年5月6日 4*19+[19/4]+5*81+[81/4]+[3*(5+1)/5]+6-3 = 1 8*19+[19/4]+5*81+[81/4]+[3*(5+1)/5]+6+7+0= 9 日干支就是甲申 2009年3月14日 4*20+[20/4]+5*9+[9/4]+[3*(3+1)/5]+14-3 = 5 8*20+[20/4]+5*9+[9/4]+[3*(3+1)/5]+14+7+0= 7 日干支是戊午 2020年2月14日 4*20+[20/4]+5*19+[19/4]+[3*(14+1)/5]+14-3 = 4 8*20+[20/4]+5*19+[19/4]+[3*(14+1)/5]+14+7+6= 0 日干支是丁亥 也可以用如下公式来计算 乘五除四基加日 双月应需加三十 一二自加闰少一 经几大月多加几 一月不算在大月 平一加一闰不加 平二加二闰加一 三不加四五加一 六七加二八加三 九十加四余加五 一月不计算在大月内,一月加一,二月加二,闰年一月不加,二月加一 三月不加,四五月加一,六七月加二,八月加三, 九十月加四,十一十二加五 双月多加三十 1800-1899 基数25 1900-1999 基数9 2000-2099 基数54 2100-2199 基数39 1802年1月10日 2*5+2/4+25+10=45 45+1=46 46-10=6 46-12=10 日干支是己酉 2012年1月10日 12*5+12/4+54+10=7 日干支是庚午 1802年5月6日 2*5+2/4+25+6=41 41+1=42 42-10=2 42-12=6 日干支是乙巳 1802年9月6日 2*5+2/4+25+6=41 41+4=45 45-10=5 45-12=9 日干支是戊申 也可以用如下公式来计算 1900----1999年日干支基数=(年尾二位数+3)×5+55+(年尾二位数-1)/4 2000----2099年日干支基数=(年尾二位数+7)×5+15+(年尾二位数+19)/4(只用商数,余数不用,数过60就去掉60)。 2100----2199年日干支基数=(年尾二位数+11)*5+39+(年尾二位数+20)/4 然后用得到日干支基数+所求日的所有天数 1981年5月6日 ((81+3)*5+55+(81-1)/4)=15 15+31+28+31+30+6=21 21-10=1 21-12=9 日干支是甲申 2009年3月14日 ((9+7)*5+15+(9+19)/4)=42 42+31+28+14=55 55-10=5 55-12=7 日干支是戊午 2020年2月14日 ((20+7)*5+15+(20+19)/4)=39 39+31+14=24 24-10=4 24-12=0 日干支是丁亥 2020年3月8日 ((20+7)*5+15+(20+19)/4)=39 39+31+29+8=47 47-10=7 47-12=11 日干支是庚戌 2101-5-6 ((1+11)*5+39+(1+20)/4)=44 44+31+28+31+30+6=50 50-10=10 50-12=2 日干支是癸丑 2101-5-26 ((1+11)*5+39+(1+20)/4)=44 44+31+28+31+30+26=10 10-10=0 10-12=10 日干支是癸酉 2102-3-8 ((2+11)*5+39+(2+20)/4)=49 49+31+28+8=56 56-10=6 56-10=8 日干支是己未 2111-5-6 ((11+11)*5+39+(11+20)/4)=36 36+31+28+31+30+6=42 42-10=2 42-12=6 日干支是乙巳 2112-3-8 ((12+11)*5+39+(12+20)/4)=42 42+31+29+8=50 50-10=0 50-12=2 日干支是癸丑 2130-2-14 ((30+11)*5+39+(30+20)/4)=16 16+31+14=1 日干支是甲子 |
|