子午流注算法归纳 苏绪林(整理) 一、干支纪时与算法 (一)基本知识 1、农历采用“干支纪法”纪年、纪月、纪日,干支纪年法从公元54年(东汉建武三十年)开始,公元元年是辛酉年。 2、干支60年轮回一周(天干与地支的有关知识参见附件1)。 天干共有十个(代号1-9,0),即:甲、乙、丙、丁、戊、己、庚、辛、壬、癸。 地支共有十二个(代号1-11,0),即:子、丑、寅、卯、辰、已、午、未、申、酉、戌、亥。 把每一个天干和每一个地支按一定顺序一对一对地搭配起来,就成为从“甲子”到“癸亥”互不重复的六十对,称为“六十甲子”(见表1),用来作为纪年、纪月、纪日的代号,循环使用,从不间断,叫作“干支纪法”。它是我国古代历法中的一项重大发明和创造。 3、属相与干支的关系。 属相指十二生肖,即鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪。生肖不知起源于何时,最早见于东汉王充著的《论衡·物势篇》中。属相与干支间并没有任何内在联系。十二生肖与十二地支,数序相同,但内容全然不相及。我国古时用十二地支配属十二种动物,即子鼠、丑牛、寅虎、卯兔、辰龙、巳蛇、午马、未羊、申猴、酉鸡、戍狗、亥猪,用以纪某人出生的年份,或对某年的简称。如凡是“丑”年出生的就属牛,如在2009年、1997年、1985年年出生的人都属牛,这些年也都称为牛年。 4、干支纪年、月、日、时知识 (1)干支纪年 用干支纪年是用农历,所以若用公元年数套用农历干支纪年时要注意,农历每年的年尾的日期在公历里都是跨年的,即公历的1月和2月的某些日期是属于上一年农历的范围。例如2009年,相应于农历是己丑年,但2009年1月25日以前的日期仍是属于农历戊子年的范围,即农历己丑年是从2009年1月26日(春节)开始的。 (2)干支纪月法 在《史记·律书》中有详细记载,由于农历通常有十二个月,而地支又是十二个,所以各月的纪月地支是固定的。这种以十二地支固定分配年内各月,叫作“建”,如建子、建丑等。将各月的地支,再配上天干,就构成了干支纪月法。在不同的朝代,年的开始月份对应的地支也不同,有以建寅为正月的,有以建子为正月的,有以建亥为正月的。现今以建寅为正月,是从西汉《太初历》开始的。查干支表,带“寅”的干支只有五个,即丙寅、戌寅、庚寅、壬寅、甲寅。如甲子年丙寅开始,二月为丁卯,……十二月为丁丑;接着是乙丑年戊寅为正月,丙寅年庚寅为正月,丁卯年壬寅为正月,戊辰年甲寅为正月。再继续下去,己巳年又是丙寅为正月,二月为丁卯,……。所以干支纪月法以五年为一周,循环使用。 (4)干支纪时法 一是指用地支记述一昼夜之间的时段。将一昼夜划分为12个时段(从汉开始):最初不是以地支命名,而是以下列名称指代:夜半、鸡鸣、平旦、日出、食时、隅中、日中、日昳(yi4)、晡(bu1)时、日入、黄昏、入定。公元前104年,汉武帝颁行《太初历》之后,渐以十二地支的名称取代上述名称。 十二地支纪时(十二辰纪时)和天象纪时及24时的对应关系是:
二是指用干支组合的60组名称循环记述一昼夜的时间段。每5天干支纪时就要循环一周。从甲子日起,这一天干支时段的次序是,甲子、乙丑……,则次日乙丑日干支纪时应是丙子、丁丑……,……,第5日干支纪时至癸亥终。干支循环整一周。 下一周,如接着上一循环的纪日干支说,第6日则是己巳日,纪时干支又需从甲子开始,……,第10时癸酉时,干支纪时至癸亥终。 如上述10日中,天干纪日循环一次,而干支组合的60组名称却循环两次。由此得出以上结论: 日天干为甲和己时,则子时的天干为甲; 日天干为乙和庚时,则子时的天干为丙; 日天干为丙和辛时,则子时的天干为戊; 日天干为丁和壬时,则子时的天干为庚; 日天干为戊和癸时,则子时的天干为壬。 整理成表如下(表2): 公式算法是在没有已知干支参照的情况下,根据干支的循环规律用一些公式来推算。 1、计算农历年干支(每60年循环一次) (3)年支数=(农历年数-3)÷12的余数 (0作12计即亥)(公式1-3); 第一种方法用公式1-1:(2009-3)÷12的余数为26,对照表1(60甲子表)第26号为“己丑”。 第二种方法用公式1-2和1-3:(2009-3)÷10的余数为6,算出年天干为“己”;(2009-3)÷12的余数为2,算出年地支为“丑”,年干支合起来为“己丑”。 (1)农历月天干序数与年天干序数有关系,甲或己的年份,正月是丙寅;乙或庚之年,正月为戊寅;丙或辛之年正月为庚寅,丁或壬之年正为为壬寅,戊或癸之年正月为甲寅;依次推之。 用公式记作:月天干序数=(年天干序数×2+月数)÷10取余数(公式2-1)。 (2)因每年正月为寅,故从正月至十二月的地支依次为:
用公式2-2: 月地支=(4+2)÷12得余数为6,即月地支为“巳”。 故月干支合为“丁巳”。 3、计算日干支(每60天循环一次) 日干支一般用公历来算,主要是因为公历的大、小月有规律,容易计算日数。 方法一:查到各年的元旦日干支,再算出所求日距当年元旦的天数,利用天干和地支的循环规律来求。 第一步:查出或算出当年的元旦干支。因为日干支每60天循环一次,公历平年有365天,闰年有366天,故如果知道了某一年的元旦干支就可以推导出下一年元旦的干支:平年干支数加5,闰年加6。如求1980至2080年间元旦干支可用下列公式算出: (1)设(年数-1980)÷4的商为A,余数为B(公式3-1); (2)当B=0时, 元旦天干数=((年数-1980)×5+A)÷10取余数(公式3-2); 元旦地支数=((年数-1980)×5+A+10)÷12取余数(公式3-3); (3)当B≠0时, 元旦天干序数=((年数-1980)×5+A+1)÷10取余数(公式3-4); 元旦地支序数=((年数-1980)×5+A+10+1)÷12取余数(公式3-5); 第二步:算出当日距元旦天数,设为C。 C=依次累加当日前各月天数+当日日期(公式3-6)。 第三步:算出当日干支。 日干支的推算公式为(适用公元1年之后): 日天干序数=(元旦日天干序数+C-1)÷10取余数(公式3-7) 日地支序数=(元旦日地支序数+C-1)÷12取余数(公式3-8) 第二、三步有另外一种算法:利用循环规律,用各个月加减数算,各月加减数如下表:
计算公式为: 日天干序数=(元旦日天干序数+当月天干加减数+日期数+闰年修正值)÷10取余数(公式3-7-1); 日地支序数=(元旦日天干序数+当月天干加减数+日期数+闰年修正值)÷12取余数(公式3-8-1) 上述方法需要查出元旦干支,且所用公式繁多,故容易出错。 方法二:用绝对公式计算,需事先设定下列参数: C=(世纪数-1);
日天干=[4C+[C/4]+5Y+[Y/4]+[3(M+1)/5]+D-3]/10取余数(公式3-9); 日地支=[8C+[C/4]+5Y+[Y/4]+[3(M+1)/5]+D+7+I]/12取余数(公式3-10); 例3-1:求2009年1月29日的干支? 用上述方法一计算: 第一步:求2009年元旦干支: 公式3-1:(2009-1980)÷4商为7,余数为1;余数不为0;故用公式3-4和3-5计算。 2009年元旦天干=((2009-1980)×5+7+1)÷10取余数=3; 2009年元旦地支=((2009-1980)×5+7+11)÷12取余数=7; 第二步:求当日距2009年1月1日的天数。 用公式3-6,C=29; 第三步:求2009年1月29日干支。 用公式3-7:当日天干=(3+29-1)÷10取余数=1;或用公式3-7-1:当日天干=(3-1+29+0)÷10取余数=1 用公式3-8:当日地支=(7+29-1)÷12取余数=11;或用公式3-8-1:当日地支=(7-1+29+0)÷12取余数=11。 故2009年1月29日的干支为“甲戌”。 用上述方法二计算: C=20;Y=8;M=13;D=29;I=0; 公式3-9:日天干=[4×20+[20/4]+5×8+[8/4]+[3×(13+1)/5]+29-3]/10取余数=[80+5+40+2+8+29-3]/10取余数=1; 公式3-10:日地支=[8×20+[20/4]+5×8+[8/4]+[3×(13+1)/5]+29+7+0]/12取余数=[160+5+40+2+8+29+7+0]/12取余数=11; 故2009年1月29日的干支为“甲戌”。
(1)时地支数=([(当时时间+1)/2]+1)/12取余数(注当时时间取值为0-24)(公式4-1); (2)时天干数=((日天干数-1)×2+时地支数)/10取余数(公式4-2); 用公式4-1:时地支数=([(13+1)/2+1])/12取余数=8; 用公式4-2:时天干数=((1-1)×2+8)/10取余数=8; 时干支为“辛末”时。 5、子午流注用干支纪时的计算 如果需要用公历时间来求时干支,较直接的方法是用公式3-9、3-10和公式4-1、4-2来求。 如果用计算机来管理,可事先查表将各年农历日期的信息存储起来,再使用上述各种公式和计算机程序语言来计算年、月、日、时干支。 |
|