干支纪日法是汉族民间使用天干地支记录日序的方法,是农历的一部分,也是历代
历书中的重要组成部分。干支是天干(甲乙丙丁戊己庚辛壬癸)、地支(子丑寅卯辰巳午未申酉戌亥)的合称,它与
干支纪年法一样,用干支相匹配的六十
甲子来记录日序,从甲子开始到
癸亥结束,六十天为一周,循环记录。
来历
古书相传,
黄帝时代有位大臣,名叫大挠,此人“深五行之情占年纲所建,于是始作甲乙以名日谓之干;作子丑以名月谓之支,干支相配,以成六旬”,意思是说干支是由大挠最先创作的。实际上,这只是传说。从古代的史实看来,干支和
干支纪法的产生也如同“火”的发现一样,是广大劳动者在生产和生活的长期实践中形成并逐步发展起来的,它的产生并不能归功于某一个人,也不能划清于某个时代。从
殷墟甲骨片中文字已有干支象形(如图1),殷代帝王也多用天干的名字,作为他的代号,所以
殷朝已有干支毫无疑义。
干支纪日从商朝便已开始,但其顺序到
春秋时代有无间断或错乱过,尚待考证。截止2013年6月已确切知道:从春秋
鲁隐公三年(公元前720年)二月
己巳日起到清宣统三年(公元1911年)止,2600多年中从未间断和错乱过。1912年
民国元年采用公元纪年后,汉族民间仍沿用干支
纪日法,百年来也未错乱。干支纪日法是商朝历法的最大成就,这是现今已知世界最长的纪日法,对于我国历史学,尤其是科学技术发展史的考证和研究,都是极为重要的记时标志,是中国一份珍贵的科学
文化遗产。
如《肴之战》:“夏四月
辛巳,败秦军于肴。’“四月辛巳”指
农历四月十三日;《
石钟山记》“元丰七年六月丁丑”,即
农历六月九日;《
登泰山记》“是月
丁未”,指这个月的二十八日。古人还单用天干或地支来表示特定的日子。如《
礼记·檀弓》“子卯不乐”,“子卯”,代指
恶日或忌日。
日柱公式
由于公历与干支纪法的体系和周期完全不同,因此它们之间的换算问题比较复杂。尤其是求解公历任一日的日干支是十分困难的,主要依靠查询万年历解决。有爱好者探究推导出计算公历任一日干支的历法公式,简称《高氏
日柱公式》。此公式采用插入世纪常数和月基数的方法,简捷准确而又科学实用,解决了由来已久的历法换算难题。在历法换算的具体问题上具有极大的实践意义。
1.高氏日柱公式
各符号意义
r:日柱的
母数,r除以60的
余数即是日柱的干支序列数;
s:公元年数后两位数减1,取整数值商;u:s除以4的余数;
m:月基数 d:日期数 x:世纪常数
注意:闰年2月之后,求出的r需要再加1。
2 世纪常数
现将17世纪至26世纪一千年间的世纪常数x,对应列表如下:
1.3 月基数
月基数m,即为前几个月的日数总和除以60的余数。
详见下表:
应用举例
例1:计算1949年10月1日即建国当日的日柱,则有s=49-1=48;u=0;m=33;d=1;x=15,将各项数据代入高氏
日柱公式可得:
r=12×6+5×(12×3+0)+33+1+15=301
例2:计算2008年5月12日即汶川地震当日的日柱,则有s=8-1=7,u=3,m=0,d=1,x=0,由于2008年为闰年,则2月之后的计算结果需要再加1。将各项数据代入高氏日柱公式可得:
r=1×6+5×(1×3+3)+0+12+0+1=49
故49除以60的余数为49,即当日的日柱为壬子。
例3:计算1895年4月17日即
马关条约签订当日的日柱,则有s=
95-1=94,u=2,m=30,d=17,x=31,将各项数据代入高氏日柱公式可得:
r=23×6+5×(23×3+2)+30+17+31=571
故571除以60的余数为31,即当日的日柱为甲午。
结论与扩展
高氏日柱公式的成功之处在于:以世纪为运算区间,并引入了世纪常数这一重要的概念。使得日柱的求解在两位数以内进行,极大地简化了求解日柱的过程,实现了编写计算代码的可行性,且能够运用于心算。是日柱求解方法的一大创举和进步。月基数的引入也在很大程度上简化了求解日柱的过程。经过进一步研究,作者发现世纪常数和世纪数之间也存在着对应关系,其关系公式(高氏日柱公式的辅助公式)如下:
C为世纪数,X为世纪常数的母数。取整数值,X除以60的余数即为世纪常数x。
日干支推算表
日干支推算表,又名日柱推算表、一纸万年历。主要用于推算日干支。一张表,能推算出表上各年的每一天的干支,十分快捷。此表由山东任红岩原创。
日柱公式:日干支序数=年数+月数+日期(和大于60,则减60。1月、2月用上一年的年数)
注意:1月和2月的各天要用上一年的年数,即未到3月用上一年数。例如求2015年2月28日干支,未到3月,要用2014年数=7,不可用2015年数。年数适用范围:此年3月-下年2月。
命理师最好将月数表完全背熟,对于盲派命理师,则最好将百年的年数表也背熟,干支表序数也应背熟。
例:求1987年7月18日,1997年1月15日,2008年8月8日,2015年11月21日,2016年10月1日干支
解:查表得知
1987年7月18日=1987年数+7月数+18日=45+2+18=65-60=5=
戊辰2008年8月8日=2008年数+8月数+8日=36+33+8=77-60=17=庚辰
2015年11月21日=2015年数+11月数+21日=12+5+21=38=
辛丑