如何计算你的五行属性

想研究下五行取名,逃不开年月日的天干地支计算。

本文以简单易懂的方式带你一步步实现该功能!

# 年份的天干地支

十大天干:甲、乙、丙、丁、戊(wù)、己、庚(gēng)、辛、壬(rēn)、癸(guǐ)。

十二地支:子、丑、寅(yín)、卯(mǎo)、辰、巳(sì)、午、未、申、酉(yǒu)、戌(xū)、亥(hài)。

干支纪年法是根据十天干和十二地支的组合来纪年的。10 和 12 的最小公倍数是 60,所以干支纪年就会出现“六十一甲子”的现象了。

那么如何计算年份的天干地支呢?

以公元4年甲子年为基准,那么公元5年为乙丑年,公元6年为丙寅年,以此类推。天干每十年轮回一次,地支每十二年轮回一次,那么计算公式如下:

// 天干地支定义
const TIANGAN = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"];
const DIZHI = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"];

function getYearPillar(year) {
    // 公元4年是甲子年,作为基准
    const baseYear = 4;
    const diff = year - baseYear;

    // +10 和 +12 为处理负数情况
    const ganIndex = ((diff % 10) + 10) % 10;
    const zhiIndex = ((diff % 12) + 12) % 12;

    return TIANGAN[ganIndex] + DIZHI[zhiIndex];
}

console.log(getYearPillar(2025)); // 输出:乙巳,2025年是乙巳年

从上面可以看到,2025年是乙巳年。但是,2025真的是乙巳年年吗?其实不完全是的,在2025年2月3日之前,还算是甲辰年!

年柱的更新是以立春作为分界点的,而月柱和二十四节气息息相关,因此我们不能简单以公元年月日简单计算天干地支。

具体方法太过复杂这里就不作介绍,简单趴了下万年历官网的算法,你可以在这里直接选择时间:

# 计算五行归属与基础分值

天干五行:直接对应一个完整的五行属性。

甲、乙 → 木

丙、丁 → 火

戊、己 → 土

庚、辛 → 金

壬、癸 → 水

地支藏干:每个地支内部都藏有一到三个天干,称为“藏干”,需要按权重计算。常见的权重分配规则如下表所示:

藏干1 (本气) 权重 藏干2 (中气) 权重 藏干3 (余气) 权重
子​ 癸(水) 1.0
丑​ 己(土) 0.6 癸(水) 0.3 辛(金)
寅​ 甲(木) 0.6 丙(火) 0.3 戊(土)
卯​ 乙(木) 1.0
辰​ 戊(土) 0.6 乙(木) 0.3 癸(水)
巳​ 丙(火) 0.6 庚(金) 0.3 戊(土)
午​ 丁(火) 0.7 己(土) 0.3
未​ 己(土) 0.6 丁(火) 0.3 乙(木)
申​ 庚(金) 0.6 壬(水) 0.3 戊(土)
酉​ 辛(金) 1.0
戌​ 戊(土) 0.6 辛(金) 0.3 丁(火)
亥​ 壬(水) 0.7 甲(木) 0.3

# 统计四柱五行权重

现在,我们可以将一个具体的八字四柱进行拆解计算。

我们以 甲子(年) 丙寅(月) 戊辰(日) 辛酉(时)​ 为例。

天干部分:直接累加每个天干所代表的五行。

年干甲 → 木+1

月干丙 → 火+1

日干戊 → 土+1

时干辛 → 金+1

地支部分:根据地支藏干表,将每个地支所藏的五行按权重累加。

年支子:癸(水) → 水+1.0 月支寅:甲(木)0.6 + 丙(火)0.3 + 戊(土)0.1 → 木+0.6,火+0.3,土+0.1 日支辰:戊(土)0.6 + 乙(木)0.3 + 癸(水)0.1 → 土+0.6,木+0.3,水+0.1 时支酉:辛(金) → 金+1.0

# 月令加倍

八字理论中,出生月份(月支)代表季节力量,对相应的五行有巨大的加强作用。月支的五行力量需要加倍计算。 本例中,月支为寅,五行属木。因此,月支寅中所含的所有木气(甲木0.6 + 乙木0.3)需要额外加一次权重:木+0.9。

# 汇总计算比例

将以上所有数据按五行分类汇总,并计算百分比

木:1 + 0.6 + 0.3 + 0.9 = 2.8

火:1.0 + 0.3 = 1.3

土:1.0 + 0.6 + 0.1 = 1.7

金:1.0 + 1.0 = 2.0

水:1.0 + 0.1 = 1.1

通过计算便可以得知自己五行里面哪个属性最重,哪个属性最轻。从而进行五行取名~