天干地支与年的换算 天干地支年算法

小编

下面是公历年份 ? 天干地支年的常用换算算法。

1. 天干、地支顺序

天干 10 个

| 序号 | 天干 |

|||

| 0 | 甲 |

| 1 | 乙 |

| 2 | 丙 |

| 3 | 丁 |

| 4 | 戊 |

| 5 | 己 |

| 6 | 庚 |

| 7 | 辛 |

| 8 | 壬 |

| 9 | 癸 |

地支 12 个

| 序号 | 地支 |

|||

| 0 | 子 |

| 1 | 丑 |

| 2 | 寅 |

| 3 | 卯 |

| 4 | 辰 |

| 5 | 巳 |

| 6 | 午 |

| 7 | 未 |

| 8 | 申 |

| 9 | 酉 |

| 10 | 戌 |

| 11 | 亥 |

天干和地支按顺序组合,60 年一个循环,称为六十甲子。

2. 公历年份换算天干地支

公式:

```text

天干序号 = (年份 - 4) % 10

地支序号 = (年份 - 4) % 12

```

然后按照上面的表查即可。

3. 示例

示例一:2024 年

```text

天干 = (2024 - 4) % 10 = 2020 % 10 = 0

地支 = (2024 - 4) % 12 = 2020 % 12 = 4

```

0 对应 甲,4 对应 辰。

所以:

```text

2024 年 = 甲辰年

```

示例二:2025 年

```text

天干 = (2025 - 4) % 10 = 2021 % 10 = 1

地支 = (2025 - 4) % 12 = 2021 % 12 = 5

```

1 对应 乙,5 对应 巳。

所以:

```text

2025 年 = 乙巳年

```

示例三:1984 年

```text

天干 = (1984 - 4) % 10 = 1980 % 10 = 0

地支 = (1984 - 4) % 12 = 1980 % 12 = 0

```

所以:

```text

1984 年 = 甲子年

```

1984 年是一个常用的甲子年基准。

4. 天干地支反推年份

因为干支纪年 60 年一循环,所以同一个干支每隔 60 年出现一次。

例如:

```text

2024 年是甲辰年

```

那么其他甲辰年有:

```text

2024 ± 60n

```

例如:

```text

1964 年、2024 年、2084 年

```

都是甲辰年。

5. 快速记忆公式

可以记住:

```text

公元年份减 4

天干除以 10 取余

地支除以 12 取余

```

即:

```text

干 = (年 - 4) mod 10

支 = (年 - 4) mod 12

```

6. 注意:年份交界点问题

严格来说,干支纪年有两种常见用法:

1. 按农历春节换年

民俗中常见,例如生肖年通常按春节算。

2. 按立春换年

命理、八字中更常用,通常以立春作为干支年的开始。

所以如果日期在公历年初,比如 2024 年 1 月,需要判断是在春节前还是立春前。

例如:

```text

2024 年 1 月一般还不能直接算作甲辰年

```

若按立春,2024 年立春前仍属于上一干支年,即癸卯年。

7. 简单代码示例

JavaScript

```js

function ganzhiYear(year) {

const tiangan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"];

const dizhi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"];

const ganIndex = (year - 4) % 10;

const zhiIndex = (year - 4) % 12;

return tiangan[ganIndex] + dizhi[zhiIndex];

天干地支与年的换算 天干地支年算法

}

console.log(ganzhiYear(2024)); // 甲辰

console.log(ganzhiYear(2025)); // 乙巳

```

Python

```python

def ganzhi_year(year):

tiangan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]

dizhi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]

gan_index = (year - 4) % 10

zhi_index = (year - 4) % 12

return tiangan[gan_index] + dizhi[zhi_index]

print(ganzhi_year(2024)) 甲辰

print(ganzhi_year(2025)) 乙巳

```

一句话:

```text

天干地支年 = 天干[(年份 - 4) % 10] + 地支[(年份 - 4) % 12]

```