干支日的计算

孤帆飘影

<h3>干支日的计算</h3><h3><br></h3><h3>昨天是中伏的起始日,同学群里议论吃什么面,我说支付成本最高的是打卤面,支付成本最低的是咸汤面,其它的各式面条的支付成本介于这两者之间。<br></h3><h3>这时LJ问:三伏吃什么?</h3><h3>我说,民间谚语讲了,头伏饺子二伏面,三伏烙饼摊鸡蛋。</h3><h3>LJ又问:这么多讲究!如果一年有两个中伏,吃两回面吗?</h3><h3>我说,看来你没有掌握数伏的定义,古人定义,夏至后第三个庚日是初伏首日,夏至后第四个庚日是中伏首日,立秋后第一个庚日是末伏首日。</h3><h3>LJ说:庚日怎么数呢?</h3><h3>我说,现在日历上很少标注干支历,你需要查阅黄历或是万年历才能知道。</h3><h3>LJ的问话引起我的兴趣,网上查找看看,有没有用计算的方式算出干支日的方法?别说,还真有,通过阅读、理解,我撰写了个word文本,并用美篇制作,留存一个电子文档。<br></h3> <h3>干支日的计算公式:</h3><h3>G=4C+int[C/4]+5y+int[y/4]+int[3(M+1)/5]+d-3</h3><h3>Z=8C+int[C/4]+5y+int[y/4]+int[3(M+1)/5]+d+7+i</h3><h3>C:世纪数减1的值,如果是4位年份,即为前2位。</h3><h3>y:如果是4位年份,即为后2位。</h3><h3>M:月份数</h3><h3>d:日期数</h3><h3>int[x]:对方括号内的数值x取整。</h3><h3>i:奇数月i=0,偶数月i=6</h3><h3>如果是1月和2月,M分别取13和14,同时公式中相应的y取上一年的年份。</h3><h3>计算后G数值除以10,余数即为天干的顺序字,余数是0,则为最后的天干。</h3><h3>计算后Z的数值除以12,余数即为地支的顺序字,余数是0,则为最后的地支。</h3><h3>为了直观一些,写出余数与干支的关系:</h3><h3>天干:1(甲)2(乙)3(丙)4(丁)5(戊)6(己)7(庚)8(辛)9(壬)0(癸)</h3><h3>地支:1(子)2(丑)3(寅)4(卯)5(辰)6(巳)7(午)8(未)9(申)10(酉)11(戌)0(亥)</h3> <h3>举例计算并验证公式的正确性</h3><h3>例1,计算今年头伏起始2019年7月12日的干支日</h3><h3>G=4×20+int[20/4]+5×19+int[19/4]+int[3(7+1)/5]+12-3</h3><h3> =80+5+95+4+4+12-3</h3><h3> =197</h3><h3>197÷10=19……7 第7个天干是“庚”</h3><h3>Z=8×20+int[20/4]+5×19+int[19/4]+int[3(7+1)/5]+12+7+0</h3><h3> =160+5+95+4+4+12+7+0</h3><h3> =287</h3><h3>287÷12=23……11 第11个地支是“戌”</h3><h3>因此2019年7月12日是庚戌日,对照万年历,正确。</h3> <h3>例2,计算今年末伏起始2019年8月11日的干支日</h3><h3>G=4×20+int[20/4]+5×19+int[19/4]+int[3(8+1)/5]+11-3</h3><h3> =80+5+95+4+5+11-3</h3><h3> =197</h3><h3>197÷10=19……7 第7个天干是“庚”</h3><h3>Z=8×20+int[20/4]+5×19+int[19/4]+int[3(8+1)/5]+11+7+6</h3><h3> =160+5+95+4+5+11+7+6</h3><h3> =293 </h3><h3>293÷12=24……5 第5个地支是“辰”</h3><h3>因此2019年8月11日是庚辰日,对照万年历,正确。</h3> <h3>例3,计算今年春节正月初一2019年2月5日的干支日</h3><h3>G=4×20+int[20/4]+5×18+int[18/4]+int[3(14+1)/5]+5-3</h3><h3> =80+5+90+4+9+5-3</h3><h3> =190</h3><h3>190÷10=19……0 余数是0,对应最后那个天干字,即第10个天干是“癸”。</h3><h3>Z=8×20+int[20/4]+5×18+int[18/4]+int[3(14+1)/5]+5+7+6</h3><h3> =160+5+90+4+9+5+7+6</h3><h3> =286 </h3><h3>286÷12=23……10 第10个地支是“酉”</h3><h3>因此2019年2月5日是癸酉日,对照万年历,正确。</h3> <h3>上述三个例子涵盖了计算公式中列出了各种状况。</h3> <h3>最后,再计算和推算明年2020年的数伏日期和天数。</h3><h3>首先需要确定夏至的日期和干支。</h3><h3>夏至一般在公历的6月21日,经查阅日历,确定2020年的夏至就是6月21日。</h3> <h3>将数值代入公式:</h3><h3>G=4×20+int[20/4]+5×20+int[20/4]+int[3(6+1)/5]+21-3</h3><h3> =80+5+100+5+4+21-3</h3><h3> =212</h3><h3>212÷10=21……2 第2个天干是“乙”</h3><h3>Z=8×20+int[20/4]+5×20+int[20/4]+int[3(6+1)/5]+21+7+6</h3><h3> =160+5+100+5+4+21+7+6</h3><h3> =308</h3><h3>308÷12=25……8 第8个地支是“未” </h3><h3>因此2020年6月21日夏至那天的干支是“乙未”日。</h3><h3>当然如果能找到表明干支日的万年历,就可以省略上述的计算步骤。</h3> <h3>根据数伏的定义,夏至后第三个庚日是头伏的起始,现在已知道明年夏至(6月21日)的干支是“乙未”,“乙”是第2个天干字,“庚”是第7个天干字,之间的差值是5,那么顺延5天,即26日是夏至后的第1个庚日,具体庚什么实际并不重要,但为了严谨一些,将地支也顺延5个字,可知2020年6月26日的干支日是“庚子”,第1个庚日确定,加10天(7月6日)是第2个庚日(庚戌),再加10天(7月16日)即是第3个庚日(庚申),即明年的7月16日入伏。</h3><h3>而中伏是夏至后第4个庚日,再顺延10天,7月26日(庚午)进入中伏。</h3><h3>末伏的定义是立秋后的第1个庚日,查看明年立秋的日期是8月7日,而中伏首日后面的那个庚日是8月5日(庚辰),在立秋之前,还需要再顺延10天,即8月15日(庚寅)才是立秋后的第1个庚日,所以明年8月15日进入末伏。</h3><h3>通过上述推算可知,2020年数伏的日期为:</h3><h3>2020年7月16日至25日头伏,10天;</h3><h3>2020年7月26日至8月14日中伏,20天;</h3><h3>2020年8月15日至24日末伏,10天;</h3><h3>总共伏期40天。</h3> <h3>感谢互联网,令我们可以寻求需要的知识。</h3><h3>感谢智能手机终端,令我们把图书馆便携地放进兜里。</h3><h3><br></h3><h3>文字写于2019.07.23</h3><h3>照片取自网络和手机截屏</h3><h3>谢谢观赏</h3>