立春换岁,还是正月初一换岁?

每年总有那么十几天,会被人反复问同一个问题:孩子到底属蛇,还是属马?

就取 2026 年春节前的那一段来说。

先看两个例子

2026 年 2 月 4 日到 2 月 16 日出生的孩子。

这一年立春在 2 月 4 日凌晨 4 点 02 分,落在农历乙巳年腊月十七;春节在 2 月 17 日。也就是说,从立春到除夕,中间隔着 13 天。

这 13 天出生的孩子:

  • 按民俗算法,年还没过,仍是乙巳蛇年腊月,属蛇
  • 按干支历算,立春已交,干支年已经是丙午

再看 2025 年 1 月 29 日到 2 月 2 日出生的孩子。

2025 年春节在 1 月 29 日,立春在 2 月 3 日,是正月初六。所以正月初一到初五这五天出生的:

  • 按民俗算法,年已经过了,是乙巳蛇年,属蛇
  • 按干支历算,立春还没到,干支年仍是甲辰

把两组摆在一起看就明白了。同样是”属蛇”,前面那组的干支年是丙午,后面那组是甲辰。民俗口中的属相没变,干支历里的年差了整整两年。

同样是属蛇,干支年差两年:2026 年立春在腊月、2025 年立春在正月初六

问题不在谁对谁错,在于它们本来就不是同一套历法

三套历法同时在跑

我们日常嘴里说的”年”,其实混着三套时间系统。

第一套是公历。 地球绕太阳一圈算一年,365 天多一点,多出来的那点靠闰年补。岁首是 1 月 1 日。这套跟干支纪年没关系,只用来记录钟表时间。

第二套是农历。 月份跟着月亮走,从这次看不到月亮到下次看不到月亮,算一个月,29 天半。12 个月加起来 354 天,比太阳年短 11 天。差的这些天,攒几年就多出一个月来,那个月就是闰月。岁首是正月初一。

第三套是干支历。 完全跟着太阳走。太阳在黄道上每走过 15 度,定一个节气,二十四个节气正好一圈。岁首是立春。

干支纪年的年与月,出自第三套

公历看太阳、农历看月亮、干支历看节气,干支纪年出自干支历

这就是为什么会出现前面那两组错位——民俗属相看的是农历的正月初一,干支纪年看的是干支历的立春,两家的”新年”根本不在同一天。

农历的正月,是从冬至倒推出来的

这一节可能有点反直觉,但很重要。

农历的编算现在是有国家标准的,2017 年发布,中国科学院紫金山天文台起草,编号 GB/T 33661-2017。里面定了五条规则,我挑三条说:

  • 月亮完全看不见的那天(朔日),定为每个月的初一
  • 冬至落在哪个月,那个月就定为农历十一月
  • 十一月往后数第二个(不数闰月),就是正月

看出来没有——农历的正月不是直接定下来的,是从冬至倒推出来的。整套历法的锚点压在冬至上,不在春节上。

闰月也是同一套逻辑。二十四节气里有一半叫”中气“,共十二个:雨水、春分、谷雨、小满、夏至、大暑、处暑、秋分、霜降、小雪、冬至、大寒。农历规定,哪个月摊不上中气,哪个月就设为闰月。

所以闰月不是凭空多出来的一个月,是那个月份确实夹在两个中气中间、够不着任何一个,才被指定为闰月。

顺便说一句:2025 年乙巳蛇年是农历闰年,384 天,年头年尾各有一个立春(2025 年 2 月 3 日和 2026 年 2 月 4 日),民俗叫”双春年”。2026 年丙午马年只有一个立春,在 2027 年 2 月 4 日,腊月廿八。再往后一年是”无春年”,一个立春都没有。这些说法指的都是在农历年内数立春的个数,跟吉凶没关系,纯粹是历法凑出来的现象。

干支历为什么用立春

回到干支历本身。

干支纪月用的是「气」,不是「月」。月相的圆缺跟气候冷暖没有对应关系,初一的月亮是圆是缺,改变不了地里的墒情。能反映寒来暑往的,是太阳在黄道上的位置。

立春那一刻,太阳到达黄经 315 度,阳气开始回升。把这一刻定为一年的起点,逻辑上是自洽的。

同样的道理,干支月也不是按农历初一换的,是按「节」换的。二十四节气里,立春、惊蛰、清明、立夏、芒种、小暑、立秋、白露、寒露、立冬、大雪、小寒这十二个叫”节”,剩下十二个叫”中气”。干支月的边界落在「节」上:立春一到就是寅月,惊蛰一到就是卯月,跟农历是不是初一没有关系。

节和中气这两班人马,各管一摊:节管分月,中气管闰月。很多人学了很多年,还把它们混为一谈。

两套口径,各管一摊

这里要说清楚一件事,免得以后在文章里被人挑毛病。

国家标准的口径是:生肖更替以农历正月初一为基准,干支纪年与农历年同步。这一点在 GB/T 33661-2017 里写得很明确,官方日历、节日、民俗活动都按这个来。

干支纪年的通行做法是:立春换年

两套口径并存,各管一摊,谁也替代不了谁。你去跟人聊”属什么”,那是民俗话题,按正月初一;你要推干支纪年,那按立春。

所以别急着下”生肖应该按立春算”这种全称判断——那是在跟国标唱反调,也容易吵起来。真要说,就说清楚:民俗属相看正月初一,干支纪年看立春。两边都不错,只是各管各的。

同一个孩子,两套口径给出两个答案:民俗上属蛇,干支年是丙午。两句话,不冲突。

还有一件事没说

上面通篇讲的是”哪一天”。但干支纪年要的是「哪一刻」。

同样一个出生日期,在乌鲁木齐出生和在揭阳出生,真太阳时能差将近两个小时。钟表上的北京时间过了一整天才换日,可太阳并没有走到那个位置。时辰交界、特别是子时交界上,这一步算错,日子就要归到前一天或后一天去。

这是后面要讲的事。

这个号写的是中国古代天文与传统历法,先从最容易被传乱的底盘讲起:三套历法的关系(本篇)、交节时刻与十二时辰的交界、真太阳时、六十甲子是怎么排出来的、闰月是怎么插进去的。

相关枢纽页:历法术语表历法复原:一年从哪一天算起数据集与预印本


作者:嘉言一得(邝楚嘉)|独立天文历法爱好者,致力于可核验的原始文献与历法数据归档。
考据笔记 · 数据集 · 预印本:GitHub / WordPress / Zenodo(DOI: 10.5281/zenodo.22820072)

三本历法·三种时间

1582 年 10 月,欧洲有十天凭空不见了。

10 月 4 日星期四过完,第二天直接跳到 10 月 15 日星期五。中间那十天,从来没有人过过。

这不是传抄的笔误,是教皇格里高利十三世下的命令。原因说起来也简单:历法跟太阳对不上了,多算出十天,删掉。

一件事能看出历法的本质——它是人类给天体运行做的刻度盘。太阳走一圈算一年,月亮圆缺一轮算一月。可这两个周期除不尽,谁也凑不齐谁。怎么凑,就分出了不同的历法。

我们日常要打交道的,其实有三本:太阳历、阴历、干支历。三本的刻度基准完全不同,混着用就会出错。

一、先把一个叫法纠正过来

很多人把农历叫「阴历」。这个叫法不准确,而且差得有点远。

历法按基准分三类:

  • 阴历:只看月亮。月份跟着月相走,不管太阳到哪儿。
  • 阳历(太阳历):只看太阳。年份跟着回归年走,不管月亮圆缺。
  • 阴阳合历:两头都看。月份跟月亮,年份跟太阳,中间的差额用闰月补。

农历属于第三种。它用朔望月定初一十五,又靠闰月把年长拉回回归年——两头都占,所以叫「阴阳合历」。真正只跟月亮走的阴历是伊斯兰历,那才是纯阴历。

把农历叫阴历,等于把混血说成单亲。

三本历法对照:看谁、一年多长、一月多长、差的天怎么补

二、太阳历:跟着太阳走

太阳历的基准是回归年——太阳接连两次通过春分点的时间间隔,365.2422 天,也就是 365 天 5 小时 48 分 46 秒。

麻烦在于这个数字不是整数。一年按 365 天算,每年少 0.2422 天,四年就攒出将近一天,得补回去,这就是闰年。

补的办法走过弯路。公元前 45 年凯撒定的儒略历,简单地四年一闰,平均年长 365.25 天。比回归年多出 0.0078 天,一年差 11 分 14 秒,看着不起眼,攒 128 年就是整整一天。

到 1582 年,误差已经攒到十天。春分从 3 月 21 日提前到了 3 月 11 日。教会在意这件事——复活节的日期要按春分推算,春分飘了,节日跟着飘。于是改历,做了两件事:

一是删掉十天,把 1582 年 10 月 4 日的次日定为 10 月 15 日,星期几照旧连着算。

二是改置闰规则:四年一闰,逢整百年不闰,逢四百年再闰。所以 1700、1800、1900 都不是闰年,2000 年是。

这么一改,四百年里只剩 97 个闰年,平均年长 365.2425 天,跟回归年差 0.0003 天,一年差 25.92 秒。要攒够一整天,得等三千三百多年。

我们现在用的公历,就是这套格里高利历。

但有一件事要分清楚:公历的月份长度是人为切分的,跟天象无关。 一年 365 天切成十二份,哪个月 31 天哪个月 30 天,是历史留下的约定——二月之所以短,一种说法是奥古斯都从二月挪走一天加到了八月。月亮圆缺也好,太阳位置也好,都不参与这个划分。

这是公历和后面要说的干支历最根本的差别。

三、阴历:跟着月亮走

阴历的基准是朔望月——月亮接连两次朔(完全看不见月亮的那天)的间隔,29.5306 天,29 天 12 小时 44 分 3 秒。

月亮本身不发光,我们看到的圆缺,是它被太阳照亮的那半边在变。从看不见,到满月,再到看不见,一轮 29 天半。这个周期抬头就能看见,所以早期历法多半从月相起手。

麻烦也出在这儿:12 个朔望月是 354.3672 天,比回归年短了将近 11 天。

纯阴历的处理办法是——不处理。

伊斯兰历就是这样。单月 30 天,双月 29 天,一年 354 天。多出来的零头靠加一天解决:30 年里挑 11 年当闰年,闰年在十二月末加一天,凑成 355 天。它只加闰日,从来不设闰月。

后果是日期在季节里漂移。伊斯兰历每年比太阳年短约 10 天 21 小时,三年就短掉一个月,32.6 个太阳年之后,伊斯兰历已经整整多走了一年。斋月因此在四季里轮流转:有一年赶在夏天,白天长,斋戒难熬;再过十几年落到冬天,日子就短得多。

纯阴历的好处是月相和日期永远对得上,代价是日期和季节彻底脱钩。对靠天吃饭的农耕社会来说,这个代价付不起。

四、干支历:也是阳历,分月的办法不一样

干支历常被当成农历的附属品,其实它独立得多,而且它是一本纯阳历——只看太阳,完全不看月亮。

它的刻度是二十四节气。太阳在黄道上每走过 15 度定一个节气,走满 360 度正好一圈,二十四个。立春起头,大寒收尾。黄经度数定死的:立春是 315 度,往后每过一个节气加 15 度,到春分正好回到 0 度。

分月用「节」,不用「气」。二十四节气里单数是节、双数是气(也叫中气),一节配一气就是一个月,全年十二个月,不用设闰月——太阳走完一圈本就是一年,本来就不差。

月首从立春起算,地支固定:

  • 立春起寅月,惊蛰起卯月,清明起辰月
  • 立夏起巳月,芒种起午月,小暑起未月
  • 立秋起申月,白露起酉月,寒露起戌月
  • 立冬起亥月,大雪起子月,小寒起丑月

这就是常说的「正月建寅」。这里的「正月」是干支历的正月,从立春开始,跟农历的正月初一不是一回事,上一篇专门讲过这个错位。

干支历和公历的关键区别在这儿:两本都是阳历,年长都跟着回归年走,但公历的月是人为切的,干支历的月是太阳位置切出来的。公历的二月可以是 28 天也可以是 29 天,看年份能被几整除;干支历的寅月永远是立春到惊蛰那一段,看太阳走到哪儿。一个看约定,一个看天象。

干支纪日另有一桩值得说的事。它是目前已知连续时间最长的纪日法:从春秋鲁隐公三年(公元前 720 年)二月己巳日算起,两千七百多年,一天没断过。这个起点还是靠日食记录倒推出来的——《春秋》记的「己巳,日有食之」,天算回推正是公元前 720 年 2 月 22 日。

商代甲骨上已经刻着完整的干支表,殷墟出土的那片(合集 37986 号)六十甲子一个不少,是当时用来核对日期的谱表。

二十四节气与十二月建:一节配一气,合起来就是一个月

五、农历站在哪儿

回到开头那个叫法。农历哪一头都不纯粹,它把两头的长处凑到了一起:

月份跟月亮走,初一必是朔日,十五前后必是满月——看日子就知道月相,这是阴历的长处。

年份跟太阳走,用闰月把 354 天补回 365 天,季节不乱跑,这是阳历的长处。

二十四节气从干支历里借过来,管农时。

补足差额的老规矩叫十九年七闰,是个大致的规律;具体到哪一年闰哪个月,看这个月有没有中气。这套做法现在写进了国家标准 GB/T 33661-2017,由紫金山天文台算好了颁布。

所以农历是一本三合一的历法:月亮管月,太阳管年,节气管农时。叫它阴历,只说了三分之一。

六、四本历摆在一起看

太阳历(公历) 阴历(伊斯兰历) 干支历 农历
看谁 太阳 月亮 太阳 月亮 + 太阳
一年多长 365 / 366 天 354 / 355 天 约 365.25 天 354 / 384 天
一月多长 人为规定 28–31 天 29 / 30 天,看月相 两个节气,约 30 天 29 / 30 天,看月相
补差办法 加闰日 加闰日,不设闰月 不用补 加闰月
岁首 1 月 1 日 穆哈兰姆月 1 日 立春 正月初一

中间两列是纯粹的,两头是调和出来的。

七、分清楚有什么用

干支纪时用干支历,看那一天的年月与日子,全按节气走,跟初一十五没关系。

过日子用公历,跟国际接轨,算的是太阳。

看月相、过节日用农历,八月十五月亮圆,这个它管。

三本历各管一摊,谁也替代不了谁。混着用的结果,就是同一个日子排出两个结果,然后争论谁对——其实谁都对,只是不是同一本历。

再往后讲,就是节气:立春不是一整天,只有一秒钟。

相关枢纽页:历法术语表历法复原:一年从哪一天算起数据集与预印本


作者:嘉言一得(邝楚嘉)|独立天文历法爱好者,致力于可核验的原始文献与历法数据归档。
考据笔记 · 数据集 · 预印本:GitHub / WordPress / Zenodo(DOI: 10.5281/zenodo.22820072)