八字 起名 吉日 运势
网站地图
首页 > 易学文化

公 🐛 历日期如何转为八字「公历日期如何转为八字日期」

作者:王梨珂 · 更新日期:2025-09-08



1、公历日期如何转为八 🌿

公历日期转八字步骤:

1. 获取公历日 🕊 期(年、月 🐝 日、时 🌷 、):

例如:2023年3月8日下 🐧 午3:00

2. 获 🦢 🌳 对应的儒略日(JD):

使用儒略 🐬 日计算公式:JD = 367 年年 7 (月 + (月日 + 9) / 12) / 4 + 275 时 / 9 + + 1,721,060.5 + ( 12) / 24

对于给 💐 🌲 的示 🐘 例,JD = .625

3. 获取八 🦉 字年干支:

年干 🦄 🐘 = (JD + 9) % 60 + 1

对于给定的示例 🍁 ,年干支 = 癸卯

4. 获取八 🐯 🐬 月干支 🐼

(1)计算月 🐘 令起点儒略日 🐴 月(JDm):JDm = JD 31 ( 1)

(2)计算月建所在八字干支 🐒 编号干支编号 🐠 : = (JDm + 21) % 60 + 1

(3)根据干 🐘 支编号获取八字月干支

🌵 于给定的示例,JDm = .625,干支编号 = 14,八 🐧 = 字月干支己卯

5. 获 🌷 🦅 八字 🦊 日干支:

(1)计算日干支编号日干支编号:儒 = (略日 🌸 + 9) % 60 + 1

(2)根据日干支编号获取八字日 💐 干支

对于给定的示例 🌺 ,八字日干 🐬 支 = 乙酉

6. 获取八字 🌹 🐋 干支:

(1)计算 🐵 时辰干 🦟 支编号时辰干支编号:儒 = ((略日时 ) % 10) 2 + ( / 6)

(2)根据时辰干支编号获取八 🕊 字时 🌾 干支 🐵

对于给定的示例,八字时 🦟 干支 = 辛亥

因此,给定公历日期对应的八字为:癸卯 己卯 🌺 乙 酉辛亥

2、公历日期如 🍀 何转为八字日期 🐵

🐋 骤 1:确定公历日期

填写公历日期 🐘 ,包括年、月日、时 🍁 、时(区为 GMT+8)。

步骤 2:计算 🐎 🕸 🦊 日数 (JD)

使用儒略 🍀 日历公式计算儒略日数:

JD = 367 年年 (7 (月 🐛 + (月 🐴 + 9)/12)) / 4 + 275 日 🐶 / 9 + 730531.5

步骤 🌷 3:计 🐕 算世数 🌸 (C)

🐕 数可以根据儒略日数计算:

C = (JD .5) / 36525

步骤 🌴 4:计算年 🌸

基于世 🦢 数,确定年柱的干 🌴 支:

| 世数 | 年 | 柱 |地支年 🦉 柱天干 🍁

||||

| 0 | 子 | 甲 🐛 |

| 1 | 丑 🌳 | 乙 🌷 |

| 2 | 寅 🦈 | 丙 |

| 3 | 卯 🦟 | 丁 🐳 |

| 4 | 辰 🐱 | 戊 🦁 |

| 5 | 巳 🐦 | 己 🐛 |

| 6 | 午 🐡 | 庚 🦍 |

| 7 | 未 | 辛 🐦 |

| 8 | 申 | 壬 🦟 |

| 9 | 酉 🌲 | 癸 🐎 |

步骤 🦉 5:计算 🐡 月柱

基于 🦍 儒略 🕊 日数,确定月柱的干 🌼 支:

| 月份月 🐈 | 柱 | 地 |支月柱天 🐱

||||

| 1 | 寅 🐞 | 甲 🐋 |

| 2 | 卯 🐠 | 乙 🌺 |

| 3 | 辰 🐈 | 丙 🦢 |

| 4 | 巳 🐒 | 丁 🌼 |

| 5 | 午 🌲 | 戊 💐 |

| 6 | 未 🕊 | 己 🐋 |

| 7 | 申 🐘 | 庚 🐞 |

| 8 | 酉 🌸 | 辛 🐅 |

| 9 | 戌 🐬 | 壬 🦈 |

| 10 | 亥 🐵 | 癸 🦁 |

| 11 | 子 🐋 | 甲 🦋 |

| 12 | 丑 🐺 | 乙 |

如果公历日 🦊 期在下一个农历月 🐝 🦟 立春之前,则使用上一个月的月柱。

🐝 骤 6:计算日柱

基于儒略 🌾 日数,确定日柱的干支 🌾

日柱 🌳 🐎 支 = (JD + 9) % 12

日柱天干 = 基于日柱地支对应的 🌵 六甲 🐯 旬日柱天干

步骤 7:计算时 🐧

🐺 于儒 🦁 略日数,确定时柱的干支:

时柱地 🐯 🌷 = (JD + 1) % 12

时柱天干 = 基于时 🐎 柱地支对 🦟 应的十二时辰天干


示例

🦋 公历日期 2023 年 8 月日 15 转 10:00 (GMT+8) 为八 🐎 字日期:

儒略日 🐋 数 (JD): .8125

🐦 🌴 (C): 782

年柱: 癸卯(世数为 9,对 🐈 应癸卯)

月柱 🐝 : 戊申(公历月 8 在农历月 9 前,使用上个月的月柱)

日柱: 辛亥 🐳 (儒略日数 + 9 取 🐞 余 12 为 亥,对应辛亥)

时柱: 庚寅(儒略日数 🦅 + 1 取余 12 为 寅,对 🌴 应庚寅 🕊

因此,八字日期为:癸卯 戊 💮 申 辛亥庚 🐅 🌲

3、公历日期如何转 🦅 为八字农历

步骤 🦟 1:确定农历年份

找到公 🕸 历年的后 🐈 两位数字。

🦊 后两位数字加 3,再除以 12。取余数(111)。

余数即为农历年份的地支编号(子、丑、寅、卯、辰、巳、午、未、申、酉 🦢 、戌、亥)。

步骤 2:确定农历 🐝 月份

🦟 到公历月份 🌺

如果是 1 月或月 2 则,农 🦋 历月份为上一年 🐦 的农历 🐛 月 12 。

如果是 🦁 3 月到月 12 则,农历月份为 🐟 公历 🌵 月份减去 2。

步骤 3:确定农 🕊 🌻 🌸

如果 🐎 公历日期 🐎 是 1 号,则 1 农历 🐟 日期为号。

如果公历日期大于 1 号,则 🌾 农历日期为公历日期减去前 🐳 一天的公历日期。

🦉 🐕 4:确 🐱 定农历时辰

找到公历日期的 🌲 时间 🌷 (24 小时制)。

将时 🌷 间除以 2,取余数(112)。

余数即为农历时辰的地支编号(子、丑、寅、卯辰、巳、午、未、申、酉、戌 🐱 、亥、)。

对应时辰为余数减 1(子鼠、丑、牛、寅、虎、卯、兔辰、龙、巳 🐠 、蛇、午、马未羊申猴酉鸡戌狗亥猪)。

示例:

公历日期 🌿 :2023 年 🌻 3 月日 🌳 15 10:20

农历年份:

23 + 3 = 26

26 ÷ 12 = 2 余 🐬 2

🐝 💐 🐡 份:丑(牛年)

农历月份:

3 2 = 1

农历月 🦍 🦍 :正月

农历日:

15 1 = 14

🕊 历日:十四 🌷 🕸

农历时辰:

10:20 ÷ 2 = 5 余 🦅 0

🕸 历时辰:戌 💐 (狗 🐞 时)

因此,2023 年 3 月 15 日 10:20 的八字农历为:丑年正 🦉 月十四日戌时 🐛

4、公历日期转换成农 🌾 历日期

算法步骤:

1. 获 🐼 取公历日期的年 🦄 、月 🐴 日、:

使用 🐴 `datetime` 模块中的 `datetime.datetime` 类获取当前或指 🌴 🐒 的公历日期。

🌸 取年 🌵 (`year`)、月 🐝 (`month`) 和日 (`day`)。

2. 计 🦢 算儒略日数 (JD):

使用以 🐋 🐧 公式计算儒略日数 🌵

JD = 367 year (7 (year + ((month + 9) // 12))) / 4 + (275 month) / 9 + day +

3. 计 🦟 算农历年月 (LY):

使 🐎 用以下公 🐱 式计算农历年 (`lyear`):

lyear = 444 + (JD ) // 365.2422

使用 🦊 以下公式计 🐘 算农历月 (`lmonth`):

lmonth = (JD ) / 29.53059

4. 计算农历 🪴 日 (LD):

获取农历年的干支年份 🌴 (GZ):使用 `ganzhi_year` 函数将农历年转换为干支 🍀 年份。

获取农历 🦍 年的节气表 (ST):使用 `jieqi_table` 函数获取农历年的节气表。

计算当 🐱 前日期在农历年的第几天:`d = JD + 1`

🐱 历节气表,找 💮 到第一个大于或等于 `d` 的节气 🦟 ,并记录节气名 (`jieqi`)。

🐋 算农 🕷 历日:`LD = d (ST[jieqi]['date'] 1)`

5. 返回 🐺 🕸 历日期 🦊

组合农历年农历、月和农历日,使用以下格 🦍 式返回农历 🦋 🐈 期:

农历 🌹 {lyear}年 🐬 {lmonth}月{ld}日

示例代码:

python

import datetime

def gan_zhi_year(year):

"""

转换 🕊 公历 🌼 🌼 为干支年份

Args:

year (int): 公 🐅 🦅 💮

Returns:

str: 干 🌳 支年份 🌵

"""

gan_zhi = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛 🦁 ', '壬', '癸']

zhi = ['子', '丑 🐼 ', '寅 🦈 ', '卯 🦁 ', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']

return gan_zhi[(year 4) % len(gan_zhi)] + zhi[(year 4) % len(zhi)]

def jieqi_table(year):

"""

获取农历年的 🍁 节气表 🦅

Args:

year (int): 公历 🦟 🐘

Returns:

dict: 节 🍁 气表 🍀

"""

jieqi_names = [

'小寒', '大寒', '立', '春', '雨', '水', '惊', '蛰',春分清 🦍 🐧 谷雨

'立夏', '小', '满 🦋 ', '芒', '种夏', '至', '小', '暑',大暑立秋处暑

'白露 🐯 ', '秋', '分', '寒露', '霜', '降', '立', '冬'小雪大雪冬至 🍁

]

jieqi_dates = [

[20, 5], [3, 20], [4, 5], [19, 21], [5, 6], [20, 21], [4, 5], [20, 21],

[5, 6], [21, 23], [6, 6], [21, 22], [7, 8], [23, 23], [8, 8], [23, 23],

[7, 8], [23, 23], [8, 9], [23, 23], [7, 8], [22, 22], [6, 6], [22, 22]

]

table = {name: {'date': date} for name, date in zip(jieqi_names, jieqi_dates)}

table['立春立 🐞 🌲 '][year 1] = [4, 5] 日期可能会跨 🦄

return table

def lunar_date(year, month, day):

"""

公历日期转换成农 🌷 历日期

Args:

year (int): 公 🦉 🐎 🦋

month (int): 公 🐱 历月

day (int): 公 🐛 🦈 🦟

Returns:

str: 农历 🐺 🐕 🦅

"""

jd = 367 year (7 (year + ((month + 9) // 12))) / 4 + (275 month) / 9 + day +

lyear = 444 + (jd ) // 365.2422

lmonth = (jd ) / 29.53059

d = jd + 1

st = jieqi_table(lyear)

for jieqi, date in st.items():

if d >= date['date']:

jieqi_name = jieqi

ld = d (st[jieqi_name]['date'] 1)

return f"农历{lyear}年{lmonth}月 🕊 {ld}日"

获取当前日期 🕷

today = datetime.datetime.today()

转换公历日期为农历 🕊 日期

lunar_date = lunar_date(today.year, today.month, today.day)

print(lunar_date)

相关文章
最新文章
返回顶部