子午流注算法歸納 蘇緒林(整理) 一、干支紀(jì)時(shí)與算法 (一)基本知識(shí) 1、農(nóng)歷采用“干支紀(jì)法”紀(jì)年、紀(jì)月、紀(jì)日,干支紀(jì)年法從公元54年(東漢建武三十年)開始,公元元年是辛酉年。 2、干支60年輪回一周(天干與地支的有關(guān)知識(shí)參見附件1)。 天干共有十個(gè)(代號(hào)1-9,0),即:甲、乙、丙、丁、戊、己、庚、辛、壬、癸。 地支共有十二個(gè)(代號(hào)1-11,0),即:子、丑、寅、卯、辰、已、午、未、申、酉、戌、亥。 把每一個(gè)天干和每一個(gè)地支按一定順序一對(duì)一對(duì)地搭配起來,就成為從“甲子”到“癸亥”互不重復(fù)的六十對(duì),稱為“六十甲子”(見表1),用來作為紀(jì)年、紀(jì)月、紀(jì)日的代號(hào),循環(huán)使用,從不間斷,叫作“干支紀(jì)法”。它是我國(guó)古代歷法中的一項(xiàng)重大發(fā)明和創(chuàng)造。 3、屬相與干支的關(guān)系。 屬相指十二生肖,即鼠、牛、虎、兔、龍、蛇、馬、羊、猴、雞、狗、豬。生肖不知起源于何時(shí),最早見于東漢王充著的《論衡·物勢(shì)篇》中。屬相與干支間并沒有任何內(nèi)在聯(lián)系。十二生肖與十二地支,數(shù)序相同,但內(nèi)容全然不相及。我國(guó)古時(shí)用十二地支配屬十二種動(dòng)物,即子鼠、丑牛、寅虎、卯兔、辰龍、巳蛇、午馬、未羊、申猴、酉雞、戍狗、亥豬,用以紀(jì)某人出生的年份,或?qū)δ衬甑暮?jiǎn)稱。如凡是“丑”年出生的就屬牛,如在2009年、1997年、1985年年出生的人都屬牛,這些年也都稱為牛年。 4、干支紀(jì)年、月、日、時(shí)知識(shí) (1)干支紀(jì)年 用干支紀(jì)年是用農(nóng)歷,所以若用公元年數(shù)套用農(nóng)歷干支紀(jì)年時(shí)要注意,農(nóng)歷每年的年尾的日期在公歷里都是跨年的,即公歷的1月和2月的某些日期是屬于上一年農(nóng)歷的范圍。例如2009年,相應(yīng)于農(nóng)歷是己丑年,但2009年1月25日以前的日期仍是屬于農(nóng)歷戊子年的范圍,即農(nóng)歷己丑年是從2009年1月26日(春節(jié))開始的。 (2)干支紀(jì)月法 在《史記·律書》中有詳細(xì)記載,由于農(nóng)歷通常有十二個(gè)月,而地支又是十二個(gè),所以各月的紀(jì)月地支是固定的。這種以十二地支固定分配年內(nèi)各月,叫作“建”,如建子、建丑等。將各月的地支,再配上天干,就構(gòu)成了干支紀(jì)月法。在不同的朝代,年的開始月份對(duì)應(yīng)的地支也不同,有以建寅為正月的,有以建子為正月的,有以建亥為正月的。現(xiàn)今以建寅為正月,是從西漢《太初歷》開始的。查干支表,帶“寅”的干支只有五個(gè),即丙寅、戌寅、庚寅、壬寅、甲寅。如甲子年丙寅開始,二月為丁卯,……十二月為丁丑;接著是乙丑年戊寅為正月,丙寅年庚寅為正月,丁卯年壬寅為正月,戊辰年甲寅為正月。再繼續(xù)下去,己巳年又是丙寅為正月,二月為丁卯,……。所以干支紀(jì)月法以五年為一周,循環(huán)使用。 (4)干支紀(jì)時(shí)法 一是指用地支記述一晝夜之間的時(shí)段。將一晝夜劃分為12個(gè)時(shí)段(從漢開始):最初不是以地支命名,而是以下列名稱指代:夜半、雞鳴、平旦、日出、食時(shí)、隅中、日中、日昳(yi4)、晡(bu1)時(shí)、日入、黃昏、入定。公元前104年,漢武帝頒行《太初歷》之后,漸以十二地支的名稱取代上述名稱。 十二地支紀(jì)時(shí)(十二辰紀(jì)時(shí))和天象紀(jì)時(shí)及24時(shí)的對(duì)應(yīng)關(guān)系是:
二是指用干支組合的60組名稱循環(huán)記述一晝夜的時(shí)間段。每5天干支紀(jì)時(shí)就要循環(huán)一周。從甲子日起,這一天干支時(shí)段的次序是,甲子、乙丑……,則次日乙丑日干支紀(jì)時(shí)應(yīng)是丙子、丁丑……,……,第5日干支紀(jì)時(shí)至癸亥終。干支循環(huán)整一周。 下一周,如接著上一循環(huán)的紀(jì)日干支說,第6日則是己巳日,紀(jì)時(shí)干支又需從甲子開始,……,第10時(shí)癸酉時(shí),干支紀(jì)時(shí)至癸亥終。 如上述10日中,天干紀(jì)日循環(huán)一次,而干支組合的60組名稱卻循環(huán)兩次。由此得出以上結(jié)論: 日天干為甲和己時(shí),則子時(shí)的天干為甲; 日天干為乙和庚時(shí),則子時(shí)的天干為丙; 日天干為丙和辛?xí)r,則子時(shí)的天干為戊; 日天干為丁和壬時(shí),則子時(shí)的天干為庚; 日天干為戊和癸時(shí),則子時(shí)的天干為壬。 整理成表如下(表2): 公式算法是在沒有已知干支參照的情況下,根據(jù)干支的循環(huán)規(guī)律用一些公式來推算。 1、計(jì)算農(nóng)歷年干支(每60年循環(huán)一次) (3)年支數(shù)=(農(nóng)歷年數(shù)-3)÷12的余數(shù) (0作12計(jì)即亥)(公式1-3); 第一種方法用公式1-1:(2009-3)÷12的余數(shù)為26,對(duì)照表1(60甲子表)第26號(hào)為“己丑”。 第二種方法用公式1-2和1-3:(2009-3)÷10的余數(shù)為6,算出年天干為“己”;(2009-3)÷12的余數(shù)為2,算出年地支為“丑”,年干支合起來為“己丑”。 (1)農(nóng)歷月天干序數(shù)與年天干序數(shù)有關(guān)系,甲或己的年份,正月是丙寅;乙或庚之年,正月為戊寅;丙或辛之年正月為庚寅,丁或壬之年正為為壬寅,戊或癸之年正月為甲寅;依次推之。 用公式記作:月天干序數(shù)=(年天干序數(shù)×2+月數(shù))÷10取余數(shù)(公式2-1)。 (2)因每年正月為寅,故從正月至十二月的地支依次為:
用公式2-2: 月地支=(4+2)÷12得余數(shù)為6,即月地支為“巳”。 故月干支合為“丁巳”。 3、計(jì)算日干支(每60天循環(huán)一次) 日干支一般用公歷來算,主要是因?yàn)楣珰v的大、小月有規(guī)律,容易計(jì)算日數(shù)。 方法一:查到各年的元旦日干支,再算出所求日距當(dāng)年元旦的天數(shù),利用天干和地支的循環(huán)規(guī)律來求。 第一步:查出或算出當(dāng)年的元旦干支。因?yàn)槿崭芍?0天循環(huán)一次,公歷平年有365天,閏年有366天,故如果知道了某一年的元旦干支就可以推導(dǎo)出下一年元旦的干支:平年干支數(shù)加5,閏年加6。如求1980至2080年間元旦干支可用下列公式算出: (1)設(shè)(年數(shù)-1980)÷4的商為A,余數(shù)為B(公式3-1); (2)當(dāng)B=0時(shí), 元旦天干數(shù)=((年數(shù)-1980)×5+A)÷10取余數(shù)(公式3-2); 元旦地支數(shù)=((年數(shù)-1980)×5+A+10)÷12取余數(shù)(公式3-3); (3)當(dāng)B≠0時(shí), 元旦天干序數(shù)=((年數(shù)-1980)×5+A+1)÷10取余數(shù)(公式3-4); 元旦地支序數(shù)=((年數(shù)-1980)×5+A+10+1)÷12取余數(shù)(公式3-5); 第二步:算出當(dāng)日距元旦天數(shù),設(shè)為C。 C=依次累加當(dāng)日前各月天數(shù)+當(dāng)日日期(公式3-6)。 第三步:算出當(dāng)日干支。 日干支的推算公式為(適用公元1年之后): 日天干序數(shù)=(元旦日天干序數(shù)+C-1)÷10取余數(shù)(公式3-7) 日地支序數(shù)=(元旦日地支序數(shù)+C-1)÷12取余數(shù)(公式3-8) 第二、三步有另外一種算法:利用循環(huán)規(guī)律,用各個(gè)月加減數(shù)算,各月加減數(shù)如下表:
計(jì)算公式為: 日天干序數(shù)=(元旦日天干序數(shù)+當(dāng)月天干加減數(shù)+日期數(shù)+閏年修正值)÷10取余數(shù)(公式3-7-1); 日地支序數(shù)=(元旦日天干序數(shù)+當(dāng)月天干加減數(shù)+日期數(shù)+閏年修正值)÷12取余數(shù)(公式3-8-1) 上述方法需要查出元旦干支,且所用公式繁多,故容易出錯(cuò)。 方法二:用絕對(duì)公式計(jì)算,需事先設(shè)定下列參數(shù): C=(世紀(jì)數(shù)-1);
日天干=[4C+[C/4]+5Y+[Y/4]+[3(M+1)/5]+D-3]/10取余數(shù)(公式3-9); 日地支=[8C+[C/4]+5Y+[Y/4]+[3(M+1)/5]+D+7+I]/12取余數(shù)(公式3-10); 例3-1:求2009年1月29日的干支? 用上述方法一計(jì)算: 第一步:求2009年元旦干支: 公式3-1:(2009-1980)÷4商為7,余數(shù)為1;余數(shù)不為0;故用公式3-4和3-5計(jì)算。 2009年元旦天干=((2009-1980)×5+7+1)÷10取余數(shù)=3; 2009年元旦地支=((2009-1980)×5+7+11)÷12取余數(shù)=7; 第二步:求當(dāng)日距2009年1月1日的天數(shù)。 用公式3-6,C=29; 第三步:求2009年1月29日干支。 用公式3-7:當(dāng)日天干=(3+29-1)÷10取余數(shù)=1;或用公式3-7-1:當(dāng)日天干=(3-1+29+0)÷10取余數(shù)=1 用公式3-8:當(dāng)日地支=(7+29-1)÷12取余數(shù)=11;或用公式3-8-1:當(dāng)日地支=(7-1+29+0)÷12取余數(shù)=11。 故2009年1月29日的干支為“甲戌”。 用上述方法二計(jì)算: 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取余數(shù)=[80+5+40+2+8+29-3]/10取余數(shù)=1; 公式3-10:日地支=[8×20+[20/4]+5×8+[8/4]+[3×(13+1)/5]+29+7+0]/12取余數(shù)=[160+5+40+2+8+29+7+0]/12取余數(shù)=11; 故2009年1月29日的干支為“甲戌”。
(1)時(shí)地支數(shù)=([(當(dāng)時(shí)時(shí)間+1)/2]+1)/12取余數(shù)(注當(dāng)時(shí)時(shí)間取值為0-24)(公式4-1); (2)時(shí)天干數(shù)=((日天干數(shù)-1)×2+時(shí)地支數(shù))/10取余數(shù)(公式4-2); 用公式4-1:時(shí)地支數(shù)=([(13+1)/2+1])/12取余數(shù)=8; 用公式4-2:時(shí)天干數(shù)=((1-1)×2+8)/10取余數(shù)=8; 時(shí)干支為“辛末”時(shí)。 5、子午流注用干支紀(jì)時(shí)的計(jì)算 如果需要用公歷時(shí)間來求時(shí)干支,較直接的方法是用公式3-9、3-10和公式4-1、4-2來求。 如果用計(jì)算機(jī)來管理,可事先查表將各年農(nóng)歷日期的信息存儲(chǔ)起來,再使用上述各種公式和計(jì)算機(jī)程序語言來計(jì)算年、月、日、時(shí)干支。 |
|