农历国历转换
国历与农历互转,涵盖 1900 到 2100 年,同时显示干支、生肖与当日节气。历表由天文算法在编译时产生,并与公布的日期逐一核对过。
在你的浏览器中运行
这一年有重复的这个月份。要第二个请勾选闰月。
- 干支年
- —
- 生肖
- —
- 星期
- —
- 节气
- —
- 下一个节气
- —
所有日期以东八区的日界为准,农历本来就是这样定义的。
农历是天文,不是公式
农历没有公式。任何一个转换器骨子里都是一张表,而那张表是把两个天文问题反复问出来的答案:
- 朔在什么时候? 含有朔(日月合朔那一刻)的那一个历日,就是初一。不是隔天,也不是初见 新月的那天,而是合朔那一瞬间所在的日子。
- 太阳黄经什么时候通过 30 度的倍数? 那十二个时刻就是中气,它们是把农历的月份绑在季节上 的东西。
两者都以东八区计算,因为农历本来就是这样定义的。这不是细节:一个发生在北京时间 00:14 的 朔,和同一个朔记成前一天 16:14 UTC,会让整个月提前一天开始。
三条规则
- 一个月从一个朔到下一个朔,29 天或 30 天,没有别的长度,而且不算出下一个朔就无从得知是 哪一种。
- 含冬至的那个月是十一月。这是整套历法的锚。正月——也就是春节——只是从十一月往后数出来的。
- 若前后两个十一月之间有十三个月,这一岁就要置闰。闰月是其中第一个不含中气的月,并且 沿用前一个月的月序:六月之后的闰月叫闰六月,农历没有十三月。
大多数说明都讲错的那一条
到处都看得到「没有中气的月份就是闰月」。这不是规则,而且是错的。
以 1985 年正月为例,它从 2 月 20 日到 3 月 20 日,里面一个中气都没有:雨水落在 2 月 19 日, 是它开始的前一天;春分落在 3 月 21 日,是它结束的后一天。照那条「规则」它该是闰月。但它不是—— 1985 年根本没有闰月。
问题出在规则的适用范围。月数是以「岁」为单位数的,从冬至到冬至,而那一岁只有十二个月。 1984 年的冬月刚好含了两个中气——12 月 22 日的冬至与 1985 年 1 月 20 日的大寒,相隔二十九天, 塞在同一个三十天的月份里——正月才会分不到。既然只有十二个月,就没有东西要插进去,也就不置闰。
一月初地球过近日点,走得最快,中气之间会挤到约二十九天半,一个三十天的月份便有可能吞下两个。 这种年份就是这样来的。
闰月的分布极不平均
这张表涵盖的 201 年里共有 74 个闰月,而它们的分布严重偏斜:
| 闰月 | 1900–2100 出现次数 |
|---|---|
| 闰四月 | 14 |
| 闰五月 | 14 |
| 闰六月 | 12 |
| 闰三月、闰二月、闰七月 | 各 8 |
| 闰八月 | 7 |
| 闰九月 | 1——只有 2014 年 |
| 闰十月 | 1——只有 1984 年 |
| 闰十一月 | 1——只有 2033 年 |
| 闰正月、闰十二月 | 从未出现 |
原因在地球轨道。七月初过远日点,太阳走得最慢,相邻两个中气可以拉开到约 31.4 天,一个 29 或 30 天的月份很容易刚好卡在两者之间,一个都碰不到。一月初过近日点则相反——中气挤到约 29.4 天, 一个月要完全不含中气几乎不可能。
所以 2033 年的闰十一月不是趣闻,而是农历最罕见的一种情形,也正是当年好几本历书算错的原因。
为什么只做到 1900 与 2100
再往外算不是做不到,是不敢保证。关键在 ΔT——地球自转与均匀时之间的差。2005 年以前是量出来的, 之后是外推的,到 2100 年的外推误差大约是一分钟。
一分钟只对「本来就落在午夜前后一分钟」的时刻有影响,而这两百年里有十六个。最极端的是 2057 年 9 月 28 日的一个朔,落在北京午夜前两秒。市面上的历书对那个月本来就有分歧,将来也还会 有;没有谁算错,只是问题比数据本身更精细。
其他几个也值得记一笔,性质完全一样:1979 年的大寒与 1923 年的雨水都在午夜前后三秒内, 2021 年的冬至则落在 23:59:19。
这张表是怎么来的
它在编译时产生,用的是 Meeus《Astronomical Algorithms》第 49 章的月相与第 25 章配合 VSOP87 的太阳位置,换算成东八区的历日之后,再套上面那三条规则。
产生器在对不上公布日期时拒绝输出任何东西:29 个从 1900 到 2100 的春节日期、31 个闰月 (包括 2033 年)、11 个确定无闰月的年份,以及 12 个节气。这些锚点在测试里再验证一次,所以重新 产生历表不可能悄悄改掉答案。
之后全部在你的浏览器里执行,历表本身大约 11 kB。
页面上的其他栏位
干支是六十甲子:十天干配十二地支,六十年一轮,不是十二年。2024 年是甲辰,1964 年也是, 2084 年还是。
节气显示这个日期落在哪一个节气里,以及下一个节气还有几天。想看整年的话, 二十四节气表列出全部二十四个。
生肖从春节换,不是从元旦换——这是最多人算错的一件事,另有专页说明。