万年历 > 八字干支

八字干支

八字干支的由来与应用

古人定义了甲、乙、丙、丁、戊、己、庚、辛、壬、癸等十个文字序列,称为天干,又定义了子、丒、寅、卯、辰、巳、午、未、申、酉、戌、亥等十二个文字序列,称为地支。为了计算时方便,我们赋予天干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

癸亥

干支的一个循环称为一甲子。由于干支序列是有顺序关係的,我们可以赋予它们代码,从059,在作计算时使用代码,算出结果后再对照上表,查出对应的干支名称。若手边一时无表可查,亦可由下列方式计算求得。

已知干支代码,要求干支名,只需将干支代码除以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年就是丙寅年,依此类推。

由于干支年月是以节气为准,故年首是从立春点开始,约在25日前后。例如阳曆年1984115日就不属甲子年,而属癸亥年。

月的推算:5年一循环前面我们提过,年干支与月干支是有绑定关係的,确定了年干支,我们就可确定月干支序列而找出对应的月干支。

民间流传可帮助记忆的口诀为:

甲己之年丙作首,
乙庚之岁戊为头,
丙辛岁首寻庚起,
丁壬壬位顺行流,
若言戊癸何方发,
甲寅之上好追求。

它的意思是:甲或己年的第一个月干支(自立春点开始)一定是丙寅,乙或庚年的第一个月干支一定是戊寅,丙或辛年的第一个月干支一定是庚寅,丁或壬年的第一个月干支一定是壬寅,戊或癸年的第一个月干支一定是甲寅。

譬如19885218时,其年干支为戊辰,其第一个月干支应为甲寅,每年的第一个月干支是从立春点开始,约在24日前后,因此,521日应在甲寅后的第三个节气月即丁巳月内。不过这种以手推算的方式,在日期接近节气点时就很难精确掌握。

日的推算:60天一循环,我们必须先有一个已知干支的参考日,算出指定日期与参考日的日数差,加上参考日的日干支代码,将之除以60取其馀数,就可推出指定日干支。在作这种计算前须先瞭解哪些年是闰年。现代所用的阳曆为格里曆,它是依据4年一闰,百年不闰,400年又闰之原则,1844可被4整除,故为闰年。1900年可被4整除,但亦可被100整除,故不为闰年。2000年可被4整除,亦可被100整除,但又可被400整除,故为闰年。

例如已知1984年的11日干支为甲午,要求算19885218时的日干支,因1984年为闰年,1985年、1986年、1987年为平年,1988年为闰年,其2月有29天。因此,从参考日到指定日的总日数366-1+365*3+31+29+31+30+21=1602。甲午之代码为30,则(1602+30mod 60 = 12,查表可得12为丙子之代码,故丙子即指定日之干支。

1-41900年至2039年每年11日的日干支表,查此表来求算日干支就只要计算当年内的日数差即可。

 

12-4:阳曆年11日之日干支表(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

 

前面的例子中,我们已求出19885218时的日干支为丙子,故其第一个时辰干支应为戊子,而8时属辰时,故可推知时辰干支为壬辰

八字干支的应用:

除了算命先生之外,现代的人已很少会用八字来记他自己的生日或重要事件,民国成立的时刻就是一个分水岭。在清朝末年时的许多事件,如戊戌政变,甲午战争,庚子赔款,辛亥革命等,都是以干支为事件命名。但民国成立后的许多事件,如五四运动,五三惨案,九一八事变,八七水灾,九二一大地震,五一二大地震等,都是以日期为事件命名。

虽然现代的人已不用干支来记日、时,但在考证历史文献时却是用得到的。由于干支记年、月、日、时辰是连续的,自古至今不曾断过,也不曾变过,所以只要是在週期60的范围内,都是可以精确推算的。由于中国古代的阴曆置月方式与现在我们所用的置月方式不同,所以纯以阴曆记载的日期来转换为格里曆很难准确。但若辅以干支的记载,就很容易判断了。