农历怎么算:闰月、节气与公历对照

生活与计算发布于 2026-10-31

「农历就是阴历」这句话是错的,而且错得挺关键 —— 正因为不是纯阴历,才有闰月和节气这两套看起来不相干的东西。

三个历法,三种参照物

历法 依据 一年长度 结果
阳历(公历) 地球绕太阳 365 或 366 天 月份与季节固定对应
阴历 月亮圆缺 约 354 天 月份与季节脱钩,十几年后春节会在夏天
农历 月份看月亮,节气看太阳 平年 354 天,闰年 383~385 天 月份有月相含义,季节也不会跑掉

纯阴历的问题是每年比回归年少 11 天,三年就差一个月,十几年后「正月」会跑到夏天去。农历的解法是插入闰月,把差距补回来。

19 年 7 闰

19 个回归年 ≈ 235 个朔望月。235 = 19×12 + 7,所以 19 年里要有 7 个闰月,农历才能和公历长期对齐。

这不是「每三年闰一次」那么整齐 —— 7 个闰月分布在不同年份,靠的是下面的规则。

闰月放在哪个月之后

规则叫「无中气置闰」:二十四节气分成 12 个「节气」和 12 个「中气」(雨水、春分、谷雨、小满…),每个农历月本该含一个中气。如果某个月从初一到三十都没有中气,这个月就是闰月,名字沿用上个月。

因为中气间隔约 30.4 天,而农历月只有 29.5 天,总有月份「错过」中气。这就是为什么闰月出现在不同月份 —— 闰四月、闰六月都常见,但闰正月、闰腊月极罕见(几百年一次)。

所以「我的农历生日每 19 年重复一次」也只是近似:19 年能对上大多数情况,但受闰月位置影响,仍可能差一天。

春节为什么在 1 月 21 日到 2 月 20 日之间跳

春节是正月初一,也就是「离立春最近的那个朔日所在月的第一天」。朔(月亮完全不可见)每 29.53 天一次,而立春固定在 2 月 4 日前后,两者叠加就产生了这个区间。

情况 春节日期
最早 1 月 21 日(如 1966 年)
最常见 1 月下旬到 2 月中旬
最晚 2 月 20 日(如 1985 年)

这也解释了为什么每年春运日期都不一样 —— 它跟着农历走,不跟公历走。

节气不是「农历的」

二十四节气本质是太阳黄经每 15° 一个节点,是纯阳历概念,和月亮无关。所以节气在公历上的日期很稳定(清明总在 4 月 4~5 日),在农历上反而飘忽。

把它算进农历体系,是因为农业需要「既知道月相又知道季节」,两套信息合在一本历书里。

过生日选农历还是公历

三条实际考虑:

  1. 法律与证件一律公历。身份证、护照、社保、退休年龄计算,全按公历出生日期。
  2. 农历生日每年对应的公历日期都不同,闰月出生的更麻烦 —— 遇到没有闰月的年份,习惯上按「前一个月的同一天」过。
  3. 生肖按农历年划分,但立春派和春节派有争议:命理多用立春(2 月 4 日),民俗多用春节(正月初一)。两种说法都有人用,讨论生肖时先说清用哪套。

换算的边界

农历与公历互转没有简单公式,需要查表(本质是一份由天文观测与规则算出的数据)。工具能处理的范围通常是 1900~2100 年,超出这个区间很多实现会静默出错 —— 算历史日期或很远的未来时要留意。

用农历转换可以双向查,同时给出干支、生肖与节气;查放假安排用中国法定节假日;算「距离下一个春节还有多少天」用日期距离计算器。

年龄计算里那个常见问题(周岁和虚岁差多少)在另一篇里有细讲,虚岁的「过年长一岁」正是农历规则。