八字干支的由来与应用
古人定义了”甲、乙、丙、丁、戊、己、庚、辛、壬、癸”等十个文字序列,称为天干,又定义了”子、丒、寅、卯、辰、巳、午、未、申、酉、戌、亥”等十二个文字序列,称为地支。为了计算时方便,我们赋予天干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的范围内,都是可以精确推算的。由于中国古代的阴曆置月方式与现在我们所用的置月方式不同,所以纯以阴曆记载的日期来转换为格里曆很难准确。但若辅以干支的记载,就很容易判断了。