农历转换器
将任意公历日期转换为中国农历,并查看该年的生肖。
计算器
本转换器仅支持单向转换——公历 → 农历。农历年份以循环的干支命名,没有数字年号,因此引擎无法将数字形式的农历日期无歧义地逆向还原。
关于此计算器
这款转换器可将任意公历(西历)日期换算为其在传统中国农历中对应的日期,并告诉你该年的生肖。中国农历是阴阳合历:每个月以新月开始,因此一个农历月为 29 或 30 天,十二个农历月比太阳年约少十一天。为了追上太阳年,大约每三年插入一个第十三个「闰月」,让月份与季节和二十四节气保持一致。与西历不同,中国的年份不是简单的数字——它由六十甲子(十天干配十二地支)和十二生肖之一来命名:鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪。输入一个日期——生日、纪念日或今天——即可读出农历的月与日、是否为闰月、干支纪年的名称以及生肖。默认显示今天的日期,因此它也可用作「今天农历是几号」和「我的生肖是什么」的查询工具。
如何解读你的结果
标题会显示你所输入公历日期对应的生肖和农历日期:农历月份编号(1–12)、当月的日期,以及该年的干支名称,同时用拼音(例如「Jiǎ-Chén」)和汉字(甲辰)标注。如果该日期落在插入的闰月中,结果会予以说明——闰月沿用前一个月的编号(「闰四月」紧跟在普通四月之后),而不是另起新名。两种历法中星期几是相同的真实星期,因为它们描述的是同一个 24 小时的民用日。年初交替时有一点需要注意:生肖不在 1 月 1 日更替,而是在农历春节——农历正月初一——更替,春节落在 1 月 21 日至 2 月 20 日之间。因此 1 月的生日可能仍属于前一个生肖年。该工具以对应的(「相关」)公历年来标注年份,让你始终清楚该农历年落在哪个太阳年。
计算方法
每一次转换都以儒略日数(JDN)为枢纽——这是一种独立于任何历法的连续日数计数。输入的公历日期先用标准的民用日期公式化为其 JDN,然后通过 Intl.DateTimeFormat("chinese" 历法)所提供的 ICU 阴阳历数据,将该 JDN 在中国农历中读出。ICU 提供农历月份(对于插入的闰月带有「bis」标记,本工具以 isLeapMonth 形式呈现)、当月的日期,以及该农历年对应的「相关」公历年。干支纪年名称和生肖则由该相关年份通过算术推导得出,以公元 4 年 = 甲子(位于循环第 1 位,鼠年)为锚点:天干序号为(年份 − 4)mod 10,地支(及生肖)序号为(年份 − 4)mod 12,在六十甲子循环中的位置为(年份 − 4)mod 60 + 1。此推导已针对 1950–2050 年与 ICU 直接给出的年名进行了验证。由于中国年份在 Intl 中没有数字形式,转换在设计上是单向的(公历 → 农历)。「今天」在页面加载后按你所在时区的本地民用午夜计算,因此默认日期无论你身在何处都正确,而无需在页面中写死构建时的日期。
实例演示
将 2024 年 2 月 10 日(公历)换算为中国农历。
2024 年 2 月 10 日是农历春节——正月初一——它开启了甲辰年,即龙年。往回退一天到 2024 年 2 月 9 日,你仍处在旧年:那是癸卯(兔年)农历十二月三十。从兔到龙这一天之差,正是新年分界线的体现。作为对比,2000 年 1 月 1 日换算为己卯(兔年)农历十一月二十五:因为 2000 年的农历春节要到 2 月 5 日才到来,2000 年的第一天仍属于前一个兔年,而非龙年。
常见问题
什么是生肖和六十甲子(干支)循环?
每个中国年份都以十二种循环往复的生肖之一命名——鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪——它们取自十二「地支」。生肖再与十「天干」之一搭配,由于 10 和 12 有公因数,两个循环每 60 年才重新对齐一次。这个六十甲子循环为每一年赋予一个两部分组成的名称,如甲辰;2024 年是龙年,下一个龙年是 2036 年。
农历春节是什么时候,为什么每年日期都不同?
农历春节是正月初一,始于冬至后的第二个新月。由于农历相对太阳(公历)年会逐渐偏移,日期会前后浮动:可能落在 1 月 21 日至 2 月 20 日之间的任何一天。2024 年是 2 月 10 日,2025 年是 1 月 29 日。生肖在这一天更替,而非在 1 月 1 日——所以 1 月底或 2 月初的日期可能仍属于前一个生肖年。
中国农历中的闰月是什么?
十二个农历月共约 354 天,比 365 天的太阳年大约少十一天。为防止月份与季节脱节,大约每三年插入一个额外的月份——闰月(19 年中共七次)。闰月不会另起新名;它沿用其前一个月的编号,所以你会看到例如「闰二月」紧接在普通二月之后。当你的日期落在闰月中时,本转换器会予以标记。例如,2023 年 3 月 22 日就落在兔年的闰二月。
为什么本工具只能从公历→农历转换,而不能反向?
此处农历是通过系统的国际化数据(Intl)解析的,它将年份报告为循环的干支名称——如「甲辰」——完全没有数字年份部分。因此一个普通的「年/月/日」农历日期无法被唯一确定:同样的农历月与日在每个 60 年循环中都会重现,而闰月又会重复使用月份编号,所以引擎没有可靠的方法将其反推回单一的公历日。正因如此,本转换器只能单向运行,即从公历日期转换为对应的农历日期。若要反向转换,请查阅已出版的对照表,如香港天文台的换算表。
资料来源
由 YouCalc 团队审核 · 最近审核
发现翻译问题、计算问题或有任何建议?欢迎告诉我们。