附录:四柱干支计算方法
学八字时,很多人一开始会先知道:
某一年是什么年
某个月是什么地支
某个时辰是什么地支
比如知道:
2002年是壬午年
午年属马
上午9点到11点是巳时
下午3点到5点是申时
但排完整八字,还需要解决三个问题:
月柱的天干怎么算?
日柱的天干地支怎么算?
时柱的天干怎么算?
这篇就专门讲这三个计算方法。
先记住一句话:
年、月、日、时都要变成干支。
只知道地支,还不算完整的一柱。
一、排八字先注意节气
八字里的年和月,通常不是简单按农历正月初一来切换,而是重视节气。
尤其是:
年柱通常以立春为界。
月柱以十二节气为界。
比如一个人出生在2002年春节后,但如果还没有到立春,在八字里未必已经进入壬午年。
所以排八字时,一定要记住:
八字看的是节气中的时间气候。
入门学习可以先理解规则,真正排盘时最好用可靠工具核对。
二、月的地支怎么定
月支和节气有关。
十二个月支从寅月开始:
立春后为寅月
惊蛰后为卯月
清明后为辰月
立夏后为巳月
芒种后为午月
小暑后为未月
立秋后为申月
白露后为酉月
寒露后为戌月
立冬后为亥月
大雪后为子月
小寒后为丑月
所以,月支不是简单等于农历月份。
比如农历正月里,如果还没有立春,八字月支仍然不一定是寅。
判断月柱时,先看出生日期落在哪个节气之后。
三、月的天干怎么算:五虎遁
月支确定以后,还要确定月干。
月干不是随便配的,它由年干推出。
传统口诀叫“五虎遁”。
“虎”指寅,因为寅对应虎,也因为八字月份从寅月开始。
口诀是:
甲己之年丙作首
乙庚之年戊为头
丙辛之年寻庚起
丁壬壬寅顺水流
戊癸之年甲寅求
意思是:
甲年、己年:寅月从丙寅开始
乙年、庚年:寅月从戊寅开始
丙年、辛年:寅月从庚寅开始
丁年、壬年:寅月从壬寅开始
戊年、癸年:寅月从甲寅开始
然后天干按顺序往后排。
比如2002年是壬午年。
壬年属于:
丁壬壬寅顺水流
所以2002年的寅月是:
壬寅月
继续往后排:
寅月:壬寅
卯月:癸卯
辰月:甲辰
巳月:乙巳
午月:丙午
未月:丁未
申月:戊申
酉月:己酉
戌月:庚戌
亥月:辛亥
子月:壬子
丑月:癸丑
所以,如果一个人出生在2002年的午月,也就是芒种后到小暑前,那么月柱就是:
丙午月
四、月干速查表
为了方便记忆,可以先看这张表。
年干 寅月起点
甲、己 丙寅
乙、庚 戊寅
丙、辛 庚寅
丁、壬 壬寅
戊、癸 甲寅
后面的卯、辰、巳、午、未、申、酉、戌、亥、子、丑,只要顺着天干往后排就可以。
比如甲年:
寅月:丙寅
卯月:丁卯
辰月:戊辰
巳月:己巳
午月:庚午
未月:辛未
申月:壬申
酉月:癸酉
戌月:甲戌
亥月:乙亥
子月:丙子
丑月:丁丑
五、日柱怎么算
日柱最麻烦。
因为日干支不是按一年或一月重新开始,而是六十甲子一直一天一天循环。
所以日柱的本质是:
找一个已知的基准日,
计算目标日期和基准日相差多少天,
再按六十甲子循环往后推。
比如如果某一天是甲子日,那么:
第二天是乙丑日
第三天是丙寅日
第四天是丁卯日
……
第六十天是癸亥日
第六十一天又回到甲子日
这是最根本的原理。
实际计算时有两种方法:
查万年历
用公式计算儒略日数,再换算干支
初学可以先查万年历,因为日柱手算最容易出错。
如果想理解公式,可以看下面这一套。
六、用公历日期计算日柱
先把公历年月日换算成儒略日数 JDN。
这里先解释一下为什么要算 JDN。
日柱的本质不是“某年某月某日对应某个固定表格”,而是:
六十甲子一天一天连续循环。
只要知道某一天在连续日数中排第几天,就可以用除以 10、除以 12、除以 60 的余数来确定它的天干地支。
所以 JDN 的作用很简单:
把一个复杂的公历日期,变成一个连续的整数日号。
比如公历日期有年、月、日,还要考虑大月小月、闰年、世纪年这些问题。
JDN 先把这些全部压成一个数字。
一旦变成连续日号,后面就只剩下循环取余。
对于公历日期:
Y = 年
M = 月
D = 日
先计算:
a = floor((14 - M) / 12)
y = Y + 4800 - a
m = M + 12a - 3
这一组转换的原因,是把一年从三月开始算。
为什么要这样做?
因为公历闰年的多出来一天在二月。
如果把三月当作一年的第一个月,那么闰日就落在一年的最后部分,计算会更整齐。
这里的含义可以这样理解:
a:判断这个月份是否是一月或二月。
y:把一月、二月暂时算到上一年里,并整体加 4800 避免负数年份带来的麻烦。
m:把三月记为0,四月记为1,一直到次年二月记为11。
所以:
3月 -> m = 0
4月 -> m = 1
...
12月 -> m = 9
1月 -> m = 10
2月 -> m = 11
这样处理以后,闰年的复杂性就集中到年份计算里。
再计算:
JDN = D + floor((153m + 2) / 5) + 365y + floor(y / 4) - floor(y / 100) + floor(y / 400) - 32045
这个式子看起来长,但每一块都有作用:
D
表示这个月中的第几天。
floor((153m + 2) / 5)
用来累计从三月开始到当前月份之前的天数。
为什么是 153?
因为从三月开始,每五个月的天数大致是:
31 + 30 + 31 + 30 + 31 = 153
这个写法可以用一个统一公式处理大小月,不用逐月查表。
365y
表示普通年份的天数。
floor(y / 4) - floor(y / 100) + floor(y / 400)
表示公历闰年规则:
四年一闰
百年不闰
四百年再闰
所以要加上被 4 整除的闰年,减去被 100 整除的世纪年,再加回被 400 整除的世纪年。
-32045
是把上面算出来的累计天数,平移到儒略日数 JDN 的标准起点上。
换句话说,前面是在算“某个内部坐标里的连续天数”,最后这个常数负责把它校准到 JDN 系统。
所以整个 JDN 公式的本质是:
日号 = 当月天数 + 月份累计天数 + 平年天数 + 闰年修正 + 起点校准
然后用下面两个公式:
日干序号 = (JDN + 9) mod 10
日支序号 = (JDN + 1) mod 12
这里的 mod 是取余数。
为什么日干要对 10 取余?
因为天干有十个:
甲 乙 丙 丁 戊 己 庚 辛 壬 癸
为什么日支要对 12 取余?
因为地支有十二个:
子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥
干支日每天往后走一位:
今天甲子
明天乙丑
后天丙寅
所以天干每 10 天循环一次,地支每 12 天循环一次,合起来每 60 天回到同一个干支。
这里最容易疑惑的是:
为什么是 +9 和 +1?
答案是:这是为了把 JDN 的连续日号,对齐到干支日的甲子循环。
如果我们规定:
0 = 甲
0 = 子
那么某一天要被算成甲子日,就必须同时满足:
(JDN + 9) mod 10 = 0
(JDN + 1) mod 12 = 0
也就是说,这套公式选择了这样一个对齐方式:
当 JDN 除以 60 余 11 时,这一天就是甲子日。
之后每天 JDN 增加 1,天干序号也增加 1,地支序号也增加 1。
所以:
甲子之后是乙丑
乙丑之后是丙寅
一直到癸亥
然后再回到甲子
因此,+9 和 +1 不是神秘数字,而是“校准常数”。
它们来自我们选定的干支日基准。
如果换一套天干地支编号方式,或者换一个基准甲子日,公式里的常数会跟着变化,但原理不变:
先把日期变成连续日号,
再把连续日号对齐到六十甲子循环。
天干序号按这个表:
0 甲
1 乙
2 丙
3 丁
4 戊
5 己
6 庚
7 辛
8 壬
9 癸
地支序号按这个表:
0 子
1 丑
2 寅
3 卯
4 辰
5 巳
6 午
7 未
8 申
9 酉
10 戌
11 亥
例如计算公历 2024年2月10日。
用公式得到:
JDN = 2460351
于是:
日干序号 = (2460351 + 9) mod 10 = 0 = 甲
日支序号 = (2460351 + 1) mod 12 = 4 = 辰
所以这一天是:
甲辰日
七、日柱计算要注意子时换日
日柱还有一个容易引起分歧的问题:
子时换日。
子时是:
23点到1点
有些派别认为晚上23点进入子时,就算进入第二天。
也有些排盘方式按现代零点换日。
所以如果出生时间在:
23点到24点之间
日柱可能会因采用的规则不同而不同。
学习时先知道这个问题即可。
真正分析命盘时,要确认自己采用的排盘规则。
八、时的地支怎么定
时支比较容易。
一天分十二时辰,每个时辰约两个小时:
子时:23点到1点
丑时:1点到3点
寅时:3点到5点
卯时:5点到7点
辰时:7点到9点
巳时:9点到11点
午时:11点到13点
未时:13点到15点
申时:15点到17点
酉时:17点到19点
戌时:19点到21点
亥时:21点到23点
比如下午4点出生,就是申时。
但这只确定了时支。
完整时柱还需要时干。
九、时的天干怎么算:五鼠遁
时干由日干推出。
传统口诀叫“五鼠遁”。
“鼠”指子,因为一天十二时辰从子时起。
口诀是:
甲己还加甲
乙庚丙作初
丙辛从戊起
丁壬庚子居
戊癸何方发
壬子是真途
意思是:
甲日、己日:子时从甲子开始
乙日、庚日:子时从丙子开始
丙日、辛日:子时从戊子开始
丁日、壬日:子时从庚子开始
戊日、癸日:子时从壬子开始
然后天干按顺序往后排。
比如日干是癸。
癸属于:
戊癸何方发,壬子是真途
所以癸日的子时是:
壬子时
继续往后排:
子时:壬子
丑时:癸丑
寅时:甲寅
卯时:乙卯
辰时:丙辰
巳时:丁巳
午时:戊午
未时:己未
申时:庚申
酉时:辛酉
戌时:壬戌
亥时:癸亥
所以如果某人是癸日,下午4点出生,下午4点是申时,那么时柱就是:
庚申时
十、时干速查表
可以先记这张表:
日干 子时起点
甲、己 甲子
乙、庚 丙子
丙、辛 戊子
丁、壬 庚子
戊、癸 壬子
后面的丑、寅、卯、辰、巳、午、未、申、酉、戌、亥,顺着天干往后排即可。
比如甲日:
子时:甲子
丑时:乙丑
寅时:丙寅
卯时:丁卯
辰时:戊辰
巳时:己巳
午时:庚午
未时:辛未
申时:壬申
酉时:癸酉
戌时:甲戌
亥时:乙亥
十一、完整例子
假设一个人出生在:
公历 2002年6月24日 16点
先看年柱。
2002年立春之后,年柱为:
壬午年
再看月柱。
6月24日在芒种之后、小暑之前,属于午月。
壬年用“五虎遁”:
丁壬壬寅顺水流
所以:
寅月:壬寅
卯月:癸卯
辰月:甲辰
巳月:乙巳
午月:丙午
月柱是:
丙午月
再看日柱。
用日柱公式计算,公历2002年6月24日的 JDN 为:
2452450
所以:
日干序号 = (2452450 + 9) mod 10 = 9 = 癸
日支序号 = (2452450 + 1) mod 12 = 11 = 亥
日柱是:
癸亥日
最后看时柱。
16点是申时。
癸日用“五鼠遁”:
戊癸何方发,壬子是真途
所以癸日的时辰为:
子时:壬子
丑时:癸丑
寅时:甲寅
卯时:乙卯
辰时:丙辰
巳时:丁巳
午时:戊午
未时:己未
申时:庚申
时柱是:
庚申时
这个例子的完整四柱就是:
壬午年
丙午月
癸亥日
庚申时
写成八字就是:
壬午 丙午 癸亥 庚申
十二、最简记忆法
最后整理成最简单的流程:
第一步:年柱看年份,但以立春为界。
第二步:月支看节气,寅月从立春开始。
第三步:月干用五虎遁,从年干推出寅月天干。
第四步:日柱按六十甲子逐日循环,最好查万年历或用JDN公式。
第五步:时支按出生时辰确定。
第六步:时干用五鼠遁,从日干推出子时天干。
最需要背的两张表是:
五虎遁:用年干定月干。
五鼠遁:用日干定时干。
日柱最不适合死背。
因为它每天都在六十甲子中循环,最好查表或用公式。
