八字干支
古人定義了”甲、乙、丙、丁、戊、己、庚、辛、壬、癸”等十個文字序列,稱為天干,又定義了”子、丒、寅、卯、辰、巳、午、未、申、酉、戌、亥”等十二個文字序列,稱為地支。為了計算時方便,我們賦予天干0-9十個代碼,賦予地支0-11十二個代碼。
表12-1:天干代碼名稱對照表 |
||||||||||
代碼 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
天干 |
甲 |
乙 |
丙 |
丁 |
戊 |
己 |
庚 |
辛 |
壬 |
癸 |
表12-2:地支代碼名稱對照表 |
||||||||||||
代碼 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
地支 |
子 |
丒 |
寅 |
卯 |
辰 |
巳 |
午 |
未 |
申 |
酉 |
戌 |
亥 |
天干與地支可簡稱干支。利用天干與地支的不同排列可形成60個不同的代名,如下表所示。
表12-3:干支代碼名稱對照表 |
|||||||||
代碼 |
干支 |
代碼 |
干支 |
代碼 |
干支 |
代碼 |
干支 |
代碼 |
干支 |
0 |
甲子 |
12 |
丙子 |
24 |
戊子 |
36 |
庚子 |
48 |
壬子 |
1 |
乙丑 |
13 |
丁丒 |
25 |
己丒 |
37 |
辛丒 |
49 |
癸丒 |
2 |
丙寅 |
14 |
戊寅 |
26 |
庚寅 |
38 |
壬寅 |
50 |
甲寅 |
3 |
丁卯 |
15 |
己卯 |
27 |
辛卯 |
39 |
癸卯 |
51 |
乙卯 |
4 |
戊辰 |
16 |
庚辰 |
28 |
壬辰 |
40 |
甲辰 |
52 |
丙辰 |
5 |
己巳 |
17 |
辛巳 |
29 |
癸巳 |
41 |
乙巳 |
53 |
丁巳 |
6 |
庚午 |
18 |
壬午 |
30 |
甲午 |
42 |
丙午 |
54 |
戊午 |
7 |
辛未 |
19 |
癸未 |
31 |
乙未 |
43 |
丁未 |
55 |
己未 |
8 |
壬申 |
20 |
甲申 |
32 |
丙申 |
44 |
戊申 |
56 |
庚申 |
9 |
癸酉 |
21 |
乙酉 |
33 |
丁酉 |
45 |
己酉 |
57 |
辛酉 |
10 |
甲戌 |
22 |
丙戌 |
34 |
戊戌 |
46 |
庚戌 |
58 |
壬戌 |
11 |
乙亥 |
23 |
丁亥 |
35 |
己亥 |
47 |
辛亥 |
59 |
癸亥 |
干支的一個循環稱為一甲子。由於干支序列是有順序關係的,我們可以賦予它們代碼,從0到59,在作計算時使用代碼,算出結果後再對照上表,查出對應的干支名稱。若手邊一時無表可查,亦可由下列方式計算求得。
已知干支代碼,要求干支名,只需將干支代碼除以10,所得的餘數即為天干的代碼;將干支代碼除以12,所得的餘數即為地支的代碼。再將代號分別對應到文字即得。例如代碼為42者,除以10的餘數為2,對應到天干中的第3個文字,即為”丙”,除以12的餘數為6,對應到地支的
第7個文字,即為”午”。
反過來,已知干支名,要求干支代碼,若g為天干之代碼,z為地支之代碼,則干支之代碼為
a mod b 表示a除以b取其餘數
例如”丁未”,天干”丁”的代碼為3,地支”未”的代碼為7,則g=3,z=7,代入上面的公式可得干支代碼為43
干支可用來表示年,60年一個循環;也可用來表示月,5年一個循環;也可用來表示日,60天一個循環,也可用來表示時辰,5天一個循環。
中國古人就是以年干支、月干支、日干支與時辰干支等八個字來表示日期與時間,所以稱為八字。而一個人出生的日期與時間,就稱為生辰八字,也稱為四柱,即年柱、月柱、日柱、時柱。
八字的機率:
八字的年干支是以60年一循環。但八字的四柱並不是以十進位,也不是以六十進位,所以60年內的不同八字個數並非。若隨意排列一組八字,則在這60年內不見得會出現。我們可以檢視一下,一年只有12個月而非60個月,所以每個年干支只有五分之一的月干支與之對應。再看每個月約有30天而非60天,所以每個月干支只有二分之一的日干支與之對應。再看每日有12個時辰而非60個時辰,所以每個日干支只有五分之一的時辰干支與之對應。因此60年內的不同八字排列個數約為
另外我們算一下60年內有多少個小時
因一個時辰為兩小時,將上面的值除以二可得60年內有約262975個時辰。此數值與前面算出的60年內不同的八字排列數259200個很接近。
因此,任意排列一組八字,在60年內出現的機率只有
我們檢視一下干支年與干支月之間的關係,發現甲子年內一定是丙寅月到丁丒月,乙丑年內一定是戊寅月到己丒月,依此類推,年干支與月干支之間是有綁定關係的,因此像甲子年戊寅月、乙丑年丁卯月等都是不存在的。存在的年干支與月干支的排列只有種,我們可稱之為有效的年月干支。
日干支與時干支之間也有同樣的關係,甲子日內一定是甲子時到乙亥時,乙丑日內一定是丙子時到丁亥時,依此類推,所以日干支與時干支之間也是有綁定關係的,有許多的排列是不會出現的。存在的日干支與時干支的排列也是只有種,我們可稱之為有效的日時干支。
年月干支的排列是60年一個大循環,在這個循環內的年月干支都是唯一的。日時干支的排列是60天一個大循環,在這個循環內的日時干支也都是唯一的。綜合起來,60年內的每一個八字都是唯一的,不會有重複情況發生。
由於年月干支與日時干支的排列沒有綁定的關係,因此各種可能的排列都會出現,應有種。如果我們稱這種排列為有效的八字,則60年內只會出現其中的一半,約259200種,因為一個月只有約30天而非60天,故每個月只有約一半的日干支與之對應。
如果每個月都是剛好30天,一年剛好是360天,則每一個60年內的八字序列都完全相同,也就是說八字排列的週期就是60年,任何一組八字出現後都會於60年後再次出現。可惜實際上每個月(節氣月)的天數不是剛好30天,而一個廻歸年的天數不是360天,而是365.24244475天,因而連續兩個60年內的八字組合序列無法同步,就錯開了。雖然一個八字出現後,有可能60年後再出現,但也可能要等240年後才又出現。一組有效的八字出現的時間間隔平均約為120年。
八字干支的推算:
年的推算:60年一循環,1924年,1984年,2044年都是甲子年,於是1925年就是乙丑年,1926年就是丙寅年,依此類推。
由於干支年月是以節氣為准,故年首是從立春點開始,約在2月5日前後。例如陽曆年1984年1月15日就不屬甲子年,而屬癸亥年。
月的推算:5年一循環。前面我們提過,年干支與月干支是有綁定關係的,確定了年干支,我們就可確定月干支序列而找出對應的月干支。
民間流傳可幫助記憶的口訣為:
甲己之年丙作首,
乙庚之歲戊為頭,
丙辛歲首尋庚起,
丁壬壬位順行流,
若言戊癸何方發,
甲寅之上好追求。
它的意思是:甲或己年的第一個月干支(自立春點開始)一定是丙寅,乙或庚年的第一個月干支一定是戊寅,丙或辛年的第一個月干支一定是庚寅,丁或壬年的第一個月干支一定是壬寅,戊或癸年的第一個月干支一定是甲寅。
譬如1988年5月21日8時,其年干支為戊辰,其第一個月干支應為甲寅,每年的第一個月干支是從立春點開始,約在2月4日前後,因此,5月21日應在甲寅後的第三個節氣月即丁巳月內。不過這種以手推算的方式,在日期接近節氣點時就很難精確掌握。
日的推算:60天一循環,我們必須先有一個已知干支的參考日,算出指定日期與參考日的日數差,加上參考日的日干支代碼,將之除以60取其餘數,就可推出指定日干支。在作這種計算前須先瞭解哪些年是閏年。現代所用的陽曆為格里曆,它是依據4年一閏,百年不閏,400年又閏之原則,1844可被4整除,故為閏年。1900年可被4整除,但亦可被100整除,故不為閏年。2000年可被4整除,亦可被100整除,但又可被400整除,故為閏年。
例如已知1984年的1月1日干支為甲午,要求算1988年5月21日8時的日干支,因1984年為閏年,1985年、1986年、1987年為平年,1988年為閏年,其2月有29天。因此,從參考日到指定日的總日數差為366-1+365*3+31+29+31+30+21=1602。甲午之代碼為30,則(1602+30)mod 60 = 12,查表可得12為丙子之代碼,故丙子即指定日之干支。
表1-4為1900年至2039年每年1月1日的日干支表,查此表來求算日干支就只要計算當年內的日數差即可。
表12-4:陽曆年1月1日之日干支表(1900年~2039年) |
|||||||||||||
1900 |
甲戌 |
1920 |
戊午 |
1940 |
癸卯 |
1960 |
戊子 |
1980 |
癸酉 |
2000 |
戊午 |
2020 |
癸卯 |
1901 |
己卯 |
1921 |
甲子 |
1941 |
己酉 |
1961 |
甲午 |
1981 |
己卯 |
2001 |
甲子 |
2021 |
己酉 |
1902 |
甲申 |
1922 |
己巳 |
1942 |
甲寅 |
1962 |
己亥 |
1982 |
甲申 |
2002 |
己巳 |
2022 |
甲寅 |
1903 |
己丒 |
1923 |
甲戌 |
1943 |
己未 |
1963 |
甲辰 |
1983 |
己丒 |
2003 |
甲戌 |
2023 |
己未 |
1904 |
甲午 |
1924 |
己卯 |
1944 |
甲子 |
1964 |
己酉 |
1984 |
甲午 |
2004 |
己卯 |
2024 |
甲子 |
1905 |
庚子 |
1925 |
乙酉 |
1945 |
庚午 |
1965 |
乙卯 |
1985 |
庚子 |
2005 |
乙酉 |
2025 |
庚午 |
1906 |
乙巳 |
1926 |
庚寅 |
1946 |
乙亥 |
1966 |
庚申 |
1986 |
乙巳 |
2006 |
庚寅 |
2026 |
乙亥 |
1907 |
庚戌 |
1927 |
乙未 |
1947 |
庚辰 |
1967 |
乙丑 |
1987 |
庚戌 |
2007 |
乙未 |
2027 |
庚辰 |
1908 |
乙卯 |
1928 |
庚子 |
1948 |
乙酉 |
1968 |
庚午 |
1988 |
乙卯 |
2008 |
庚子 |
2028 |
乙酉 |
1909 |
辛酉 |
1929 |
丙午 |
1949 |
辛卯 |
1969 |
丙子 |
1989 |
辛酉 |
2009 |
丙午 |
2029 |
辛卯 |
1910 |
丙寅 |
1930 |
辛亥 |
1950 |
丙申 |
1970 |
辛巳 |
1990 |
丙寅 |
2010 |
辛亥 |
2030 |
丙申 |
1911 |
辛未 |
1931 |
丙辰 |
1951 |
辛丒 |
1971 |
丙戌 |
1991 |
辛未 |
2011 |
丙辰 |
2031 |
辛丒 |
1912 |
丙子 |
1932 |
辛酉 |
1952 |
丙午 |
1972 |
辛卯 |
1992 |
丙子 |
2012 |
辛酉 |
2032 |
丙午 |
1913 |
壬午 |
1933 |
丁卯 |
1953 |
壬子 |
1973 |
丁酉 |
1993 |
壬午 |
2013 |
丁卯 |
2033 |
壬子 |
1914 |
丁亥 |
1934 |
壬申 |
1954 |
丁巳 |
1974 |
壬寅 |
1994 |
丁亥 |
2014 |
壬申 |
2034 |
丁巳 |
1915 |
壬辰 |
1935 |
丁丒 |
1955 |
壬戌 |
1975 |
丁未 |
1995 |
壬辰 |
2015 |
丁丒 |
2035 |
壬戌 |
1916 |
丁酉 |
1936 |
壬午 |
1956 |
丁卯 |
1976 |
壬子 |
1996 |
丁酉 |
2016 |
壬午 |
2036 |
丁卯 |
1917 |
癸卯 |
1937 |
戊子 |
1957 |
癸酉 |
1977 |
戊午 |
1997 |
癸卯 |
2017 |
戊子 |
2037 |
癸酉 |
1918 |
戊申 |
1938 |
癸巳 |
1958 |
戊寅 |
1978 |
癸亥 |
1998 |
戊申 |
2018 |
癸巳 |
2038 |
戊寅 |
1919 |
癸丒 |
1939 |
戊戌 |
1959 |
癸未 |
1979 |
戊辰 |
1999 |
癸丒 |
2019 |
戊戌 |
2039 |
癸未 |
時辰的推算:5天一循環,前面已提過日干支與時干支有綁定的關係,知道日干支就可知道這一日的時干支的序列。
民間流傳可幫助記憶的口訣為:
甲己還加甲,乙庚丙作初,丙辛從戊起,丁壬庚子屬,戊癸何方發,壬子是真途。
它的意思是甲或己日的第一個時辰名一定是甲子,乙或庚日的第一個時辰名一定是丙子,丙或辛日的第一個時辰名一定是戊子,丁或壬日的第一個時辰名一定是庚子,戊或癸日的第一個時辰名一定是壬子,
每日的第一個時辰,即子時,不是從0時開始,而是從前一日的23時起至當日的1時止,所以,八字的日干支也不是從0時開始,而是從前一日的23時起,至當日的23時止。
表12-5:時辰時間對照表 |
||||||||||||
時辰 |
子 |
丒 |
寅 |
卯 |
辰 |
巳 |
午 |
未 |
申 |
酉 |
戌 |
亥 |
時間 |
23-1 |
1-3 |
3-5 |
5-7 |
7-9 |
9-11 |
11-13 |
13-15 |
15-17 |
17-19 |
19-21 |
21-23 |
前面的例子中,我們已求出1988年5月21日8時的日干支為丙子,故其第一個時辰干支應為戊子,而8時屬辰時,故可推知時辰干支為壬辰
八字干支的應用:
除了算命先生之外,現代的人已很少會用八字來記他自己的生日或重要事件,民國成立的時刻就是一個分水嶺。在清朝末年時的許多事件,如戊戌政變,甲午戰爭,庚子賠款,辛亥革命等,都是以干支為事件命名。但民國成立後的許多事件,如五四運動,五三慘案,九一八事變,八七水災,九二一大地震,五一二大地震等,都是以日期為事件命名。
雖然現代的人已不用干支來記日、時,但在考證歷史文獻時卻是用得到的。由於干支記年、月、日、時辰是連續的,自古至今不曾斷過,也不曾變過,所以只要是在週期60的範圍內,都是可以精確推算的。由於中國古代的陰曆置月方式與現在我們所用的置月方式不同,所以純以陰曆記載的日期來轉換為格里曆很難準確。但若輔以干支的記載,就很容易判斷了。