日柱公式

更新时间:2023-12-18 19:03

由于公历与干支纪法的体系和周期完全不同,因此它们之间的换算问题比较复杂。尤其是求解公历任一日的日干支是十分困难的,主要依靠查询万年历解决。作者经过潜心研究,探究推导出──计算公历任一日干支的历法公式,简称《高氏日柱公式》。此公式采用插入世纪常数和月基数的方法,简捷准确而又科学实用,彻底解决了由来已久的历法换算难题。在“不查万年历,日柱早知道”的具体问题上具有极大的实践意义。

相关基础知识

现行的公历即格里历,是一种太阳历。干支纪日法自古已有,它使用天干地支记录日序,日干支即是日柱。而求解公历任一日的日柱是由来已久的难题。为了解决这一难题,作者总结出《高氏日柱公式》。由于上述问题涉及周易术学,因此历来的易学者们都使用万年历,来查询某日的日柱。虽然有许多研究者,提出了许多解决方法,比较出名的就是张氏日柱公式,但都由于方法繁琐、难以实用,并不能从根本上解决日柱求解问题。而《高氏日柱公式》根据公历和干支纪年法的具体特点,首次采用插入世纪常数和月基数的数学方法,使得日柱的求解在较小的数量级内进行,极大地简化了求解日柱的过程,实现了编写计算代码的可行性,并且能够运用于心算。真正实现了“不查万年历,日柱早知道”的梦想,彻底解决了日柱求解问题。

(一)公历的内容与沿革

标准的公历即1582年颁布的格里历。它继承了儒略历设置大、小月的方法,全年分为12个月。其中,1月、3月、5月、7月、8月、10月、12月是大月,长31日,4月、6月、9月、11月是小月,长为30日,只有2月平年是28日,闰年29日;并且在儒略历的基础上改进了闰年的方法,规定凡公元年数被4整除的年份是闰年,但当公元年数是整百整千的“世纪年”时,必须能被400整除的年份才是闰年。平年设365日,闰年为366日。

(二)干支纪日法的内容和由来

干支纪日法是汉民族使用天干地支记录日序的方法,是农历的一部份,也是历代历书的重要组成。干支是天干、地支的合称,天干有十:甲、乙、丙、丁、戊、己、庚、辛、壬、癸;地支有十二:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。干支纪日法使用干支依次组合的六十甲子来记录日序,从甲子开始到癸亥结束,六十天为一周,循环记录。日干支即是日柱。

干支纪日法商朝开始使用,甲骨文字中已有干支象形。现已考证:春秋以来的干支纪日从未错乱过。干支纪日法是商朝历法的最大成就,是现今已知世界上最长的纪日法,也是中国一份珍贵的科学文化遗产。

(三)干支表

把干支依次组合正好六十为一周,周而复始,循环记录,这就是俗称的“干支表”。干支表的最大作用就是直观地列出六十甲子及其对应序列数,这在实际运用中十分重要。使用干支纪法来表示四柱,即年柱、月柱、日柱、时柱。四柱就是俗语所说的生辰八字。例如:1949年10月1日14时,即可用干支纪法表示为:己丑年 癸酉月 甲子日 辛未时。则当时出生的婴儿的生辰八字就是己丑 癸酉 甲子 辛未。

现列十天干、十二地支和干支表如下:

高氏日柱公式

(一)公式

(二)符号意义

r:日柱的母数,r 除以60的余数即是日柱的干支序列数;

s:公元年数后两位数, 取整数部分;

u:s 除以4的余数;

m:月数,“[ ]”内取整数部分;

d:日期数;

x:世纪常数

(三)世纪常数

世纪常数x是高氏日柱公式中重要的数值。高氏日柱公式以世纪为运算区间,仅取公元年数后两位代入运算,极大地简化了日柱求解过程。以世纪为区间进行运算时,每个世纪的日柱初始值必然不同,设日柱初始值为世纪常数x。

关于世纪常数的性质和意义,作出以下两点说明:(1)每世纪的第一年是从“0”开始的,故整百整千的“世纪年”即为每世纪的第一年。即例如:1900年应视为20世纪的第1年,其公元年份后两位为零,即s=0。

(2)世纪常数x即为每世纪第一年3月1日的的日柱序列数减1(由于月数改良后,将每年3月视为本年的起始月),即例如:21世纪的世纪常数即为2000年的3月1日的日柱序列数减1,而2000年3月1日是戊午日,“戊午”的序列数是55,故x=55-1=54(由于干支计数的60循环,而54-60=-6,从计算角度来看54与-6是等价的)。

现将17世纪至26世纪一千年间的世纪常数x,对应列表如下:

表2-1.1

表2-1.2

(四)月数

月数m,即为一年中各月的月份数。

需要申明的是——公式中的符号“m”不再表示月基数,而表示月份数。直接输入月数m,通过函数运算输出“月基数”。将月基数巧妙地包含在运算之中,代替了对月基数表的识记。即:(“[ ]”内取整数部分)[4]

改良公式

1月和2月可以通过下列公式转换,〈〉 取余, 这样就不用考虑是否是1月或者2个月份了.

新公式

u和x 做同样的修正

粘贴一个exce公式, AB3为年,AC3为月,AD3为日. 结果 mod 60 即为r.

=INT(MOD(AB3-INT((MOD(9-*11,12)+3)/13),100)/4)*6+5*(INT(MOD(AB3-INT((MOD(9-*11,12)+3)/13),100)/4)*3+MOD(MOD(AB3-INT((MOD(9-*11,12)+3)/13),100),4))+30*(MOD(AC3,2)+1)+INT(((MOD(9-AC3*11,12)+3)*3-7)/5)+AD3+44*(INT((AB3-INT((MOD(9-*11,12)+3)/13))/100))+INT(INT((AB3-INT((MOD(9-*11,12)+3)/13))/100)/4)+9

公式应用举例

例1:计算2008年的2月29日的当日日柱,在计算中应将这天视为2007年的14月29日。则有s=7;u=3;m=14;d=29;x=54,将各项数据代入高氏日柱公式可得:

r=1×6+5×(1×3+3)+30×1+7+29+54=156

故156除以60余数为36,即当日日柱为己亥。

例2:计算1949年10月1日即建国当日的日柱,则有s=49;u=1;m=10;d=1;x=9,将各项数据代入高氏日柱公式可得:

r=12×6+5×(12×3+1)+30×1+4+1+9=301

故301除以60的余数为1,即当日的日柱为甲子。

例3:计算2008年5月12日即汶川地震当日的日柱,则有s=8;u=0;m=5;d=12;x=54,将各项数据代入高氏日柱公式可得:

r=2×6+5×(2×3)+30×0+1+12+54=109

故109除以60的余数为49,即当日的日柱为壬子。

例4:计算1895年4月17日即马关条约签订当日的日柱,则有s=95;u=3;m=4;d=17;x=25,将各项数据代入高氏日柱公式可得:

r=23×6+5×(23×3+3)+30×1+1+17+25=571

故571除以60的余数为31,即当日的日柱为甲午。

例5:计算2015年的1月10日的当日日柱,在计算中应将这天视为2014年的13月10日。则有s=14;u=2;m=13;d=10;x=54,将各项数据代入高氏日柱公式可得:

r=3×6+5×(3×3+2)+30×0+6+10+54=143

故143除以60余数为23,即当日日柱为丙戌。

结论与扩展

《高氏日柱公式》的成功之处在于:以世纪为运算区间,并引入了世纪常数这一重要的概念。使得日柱的求解在三位数以内进行,极大地简化了求解日柱的过程,实现了编写计算代码的可行性,且能够运用于心算。是日柱求解方法的一大创举和进步。月基数的设置也在很大程度上简化了求解日柱的过程。经过进一步研究,作者发现世纪常数和世纪数之间也存在着对应关系,其关系公式(辅助公式)如下:

说明:N为该年所属世纪数,X为世纪常数的母数。X 除以60的余数即为世纪常数 。当求出的世纪常数数值较大时,为了简化计算,可以利用干支计数的循环特性进行等价替换。

事实上,高氏日柱公式的效力(即适用时间范围)是与格里历相同的。而标准的格里历颁布时间为1582年,并对此前的儒略历进行了日期删减,导致了阶段日期的不连续。也就是说,格里历的在1582年是没有效力的。简言之,即使从文献上查得,例如:1492年10月12日哥伦布发现新大陆的日期,也无法用公式准确计算出当日的日柱。当然不是说无法得知,而是需要对方程参数进行适应性修改(重复的11天),蔡勒公式也受此影响。

参考文献

[1]格里历.百度百科_全球最大中文百科全书[引用日期2015-11-5]

[2]戴兴华、杨敏.天干地支的源流与应用.气象出版社,2006年

[3]雅瑟.中华万年历全书.新世界出版社,2011年

[4]蔡勒.蔡勒公式.百度百科[引用日期2015-11-5]

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}