文章

农历简说

三句话介绍农历:阴以定月,阳以定气,阴阳相合以定年置闰。

中国传统的农历为「阴阳合历」,其算法兼顾日月的运行。本文将依据现行标准《农历的编算和颁行》,简要介绍其原理。

所谓「阴阳合历」,简而言之三句话:阴以定月,阳以定气,阴阳相合以定年置闰。

所谓「阴以定月」,即按照月相定月份。以地面视角论,月亮一圆一亏,为一个月。以行星视角论,以地日连线为参考系,月球绕地球一周为一个月。这种月称「朔望月」:无月为朔,月圆为望。一个朔望月时长 29-30 天。朔望月系统农历中「阴历」的成分。

所谓「阳以定气」,即按照太阳直射纬度定节气,将一个回归年等分为 24 份。以地面视角论,正午太阳高度角变化的一个周期是一个回归年。以行星视角论,地球上太阳直射点纬度的一个变化周期是一个回归年1。四个最重要的节气是二分二至。春分、秋分,太阳直射赤道,昼夜等长。夏至,太阳直射北回归线,昼最长、夜最短。冬至,太阳直射南回归线,昼最短,夜最长。民间有谚语「过一冬至,长一枣刺」,即谓冬至之后白昼渐长。生活中不难发现,节气日期常与公历相合,有「上半年来六廿一,下半年来八廿三」之说,即二十四个节气平分到十二个公历月,每月两个,上半年多在 6 日、21 日左右;下半年多在 8 日、23 日左右。节气和回归年的系统,是农历中「阳历」的成分。

一个回归年约 365 天,而一个朔望月约 29-30 天,于是一年有 12 个月有余。但既已以月相定月,自不能等满一年将月份重新记起,故需更依他法以合年月,此即我所谓「阴阳相合以定年置闰」。原则也简单:冬至必须在十一月。此时若两个十一月之间不含后者有 12 个月,则一切正常;否则有 13 个月2,此时需将其中一个月设为前一月的「闰月」。置闰规则为,从冬至开始,第一个没有「中气」的月定为上个月的闰月3。「中气」是从二十四节气中每隔一个选一个所得,从冬至开始,包括冬至、大寒、雨水等。定十一月包含冬至,两冬至间第一个无中气月置闰,这是农历中阴阳相合的机制。

农历作为阴阳合历,大体的规则即如上述。可以看出,这套规则有赖于实时、精密的天文观测,因此还有很多微妙之处。例如朔、望、节气依定义是时间点,如果恰好处于两日交界处,应定于何日?又如秒和地球自转周期亦不能完美相合,故有闰秒。这类问题稳定、精密的历法不可不处理,但对于理解农历之要旨,则「阴以定月,阳以定气,阴阳相合以定年置闰」,三句足矣。

  1. 回归年略短于地球公转周期,后者称恒星年,差异原因为地轴进动,初识者可暂不细究。 ↩︎

  2. 两冬至日之间为 365 或 366 天,每月 29 或 30 天。后一冬至距前一十一月首不少于 365 天(前一冬至恰在月首),不多于 366 + 30 = 396 天(前一冬至在月末)。连续 12 个朔望月 354.36 天,13 个朔望月 383.89 天,14 个朔望月 413.42 天。故后一冬至必然在前一十一月后第 13 或 14 个朔望月中,于是两个十一月之间不含后者只可能有两种情况:有 12 或 13 个月。有趣的是,类似阴阳合历系统至多有一个闰月,并不敏感依赖年长和月长的具体数值,因此我们不必担心日后地球或月球的公转周期波动会影响这一置闰规则。考虑月长为 $T_{1}\pm \delta_{1}$ 日, 年长为 $T_{2}\pm \delta_{2}$ 日,其中 $\delta$ 是将时刻定到日时产生的误差,一般为 0.5。则上述论证无非是说,在 $[T_{2} - \delta_{2}, T_{2} + T_{1} + \delta_{1} + \delta_{2}]$ 中,有且仅有一个以 $T_{1}\pm \delta_{1}$ 为周期重复的点。这是因为区间大小为 $T_{1}+\delta_{1} + 2\delta_{2}$,只要 $T_{1}>3\delta_{1}+2\delta_{2}$ (这个要求很松),则显然有 $T_{1}+\delta_{1} < T_{1}+\delta_{1} + 2\delta_{2} < 2 (T_{1} - \delta_{1})$。 ↩︎

  3. 只有 12 个中气,因此 13 个月中必有一个无中气月。 ↩︎

本文由作者按照 CC BY 4.0 进行授权