体元承夏道,推历法尧咨——从中秋、国庆到历法

作者:    所在单位:中国科学技术大学

(一)

再过几天,中秋和国庆假期连在一起的长假就要开始了。这让我想起来2020年的那个国庆,因为中秋恰好和它重合在同一天的缘故,单独的三天中秋假期就融入了国庆之中。人们同时在朋友圈表达对祖国的热爱和团圆的期盼,这种现象非常有趣。中秋和国庆的缘分断断续续。我查找日历发现,中秋和国庆处于同一天的现象不是孤例。2001年和1982年也都是如此。

它们分别相隔19年,那么下一次出现中秋国庆重合的现象会是2039年吗?

2039年的中秋和国庆是挨着的,并不在同一天。事实上,再下一次只需要等到2031年。

人们不禁要问,产生这种复杂而神奇现象的原因是什么?实际上,这和中秋、国庆背后分别代表的历法——农历阳历有关。

(二)

由于科学的发达,处于现代社会的我们,只需要打开手机,借助工具,就知道今天是几月几日,目前是几时几分,还能“上知五百年,下知五百年”。不过古代的人们没有先进的计时仪器,他们想要测量时间,只能依靠自然原有的东西。自然的现象无不引起先人的惊叹,从太阳的东升西落到月亮的阴晴圆缺,从昼夜交替再到斗转星移。古人经过长时间的观测,发现了太阳和月亮富有周期性的运动规律,于是便诞生了“日”和“月”的概念。太阳和月亮也就成为了计算时间的工具。“年”的诞生则稍微复杂一点。因其周期太长,古人最初对它的认识,来自于物候,即生物按照环境变化进行生长发育的周期。古文字中的“年”是谷穗和果子成熟的象征;《谷梁传·宣公十六年》解“年”:“五谷大熟为大有年”。年的本义和农业生产密切相关。到了后来,人们认识到物候产生的原因是太阳运动,年也就逐渐脱离了它的原有含义。

因此所谓历法,就是根据一定规律安排年、月、日,使之协调而成体系的方法。古代文明的历法,都是依照观察日月、星象运动来制定。如古埃及人通过观察发现,尼罗河水位开始上涨的那段时间,大致就是天空中最亮的星星之一——天狼星和太阳一同在地平线上升起的时候。因此,古埃及人就把天狼星在日出时候重新出现的那一天定做一年的开始。又如目前还在阿拉伯国家中广泛使用的伊斯兰历法,以月亮阴晴圆缺一次作为一月,十二次作为一年,由于它依照月球的运动规律制定,人们也称这种历法为阴历。现在通行的公历,反映了太阳的运动,我们就把它叫做阳历,例如,对于我国来说,公历的六月一定是夏天,十二月一定是冬天。

那么农历属于什么样的历法呢?虽然在日常生活中人们常常称农历为阴历,但其实它是一种阴阳合历。农历同时反映着太阳和月亮的运动。前文所提到的中秋节,对应着农历的八月十五,这一天一定是月圆。而每个月的初一,月亮都淹没在太阳的光辉之中,无法看见。不过公历就无法做到这一点。即使我们知道国庆是十月一日,但不能单独凭借这个日期,了解月亮阴晴圆缺的情况。

(三)

由于阳历不考虑月球运动,因此重要的是协调好日和年的关系。学过地理的我们知道,一年实际上就是地球绕太阳公转一周的时间。现代天文计算精确表明,真正的一年等于365.2422天。由于这个数据并非整数,而设置日期的时候又只能取整,因此必须在某几年之内增加一天,使得对于一个较长的时间之内,每一年的平均天数靠近365.2422这个数字。当今通行的公历,正常的一年叫做平年,是365天。如果年份是四的倍数,那么就加一天,叫做闰年。不过如果年份是整百的倍数,那么每四个这样的年份,就要有三个没有闰年。平均来说,四年一次的闰年,相当于把一天安排在四个平年之中,这就为每一年加上了0.25天。而整百的年份,平均每一年相当于减去了0.0075天。这样看来,一年的平均天数就是:

365+0.25-0.0075=365.2425

也就是说,每一个公历年相比真正的一年,不过是多了0.0003天,约26秒。可以看出两者之间差距非常之小,要三千多年才会相差一天。而我们现在通行的公历是1582年制定的,数百年的误差累计到现在也不过几个小时。

但是对于农历来说,由于需要同时考虑日月运动,制定规则就相对困难许多,同时月球运动也比太阳复杂。由于各种原因影响,一个朔望月(即月亮阴晴圆缺的一个周期)可能是29天,也可能是30天,平均来说,是29.530588天。为了使得平均每个月安排的天数往这个数字附近靠,农历就设置了29天的小月和30天的大月,交错设置。不过这样得来一月的平均天数是29.5天,比真正的周期又小一点,所以经过若干月就要安排两个大月。

协调好日和月的关系之后,就要考虑月和年的关系。如上所述,一年的精确值为365.2422日,这大约是12个朔望月加上11日。若是不加以修订,只需经过十年,误差就达到一百多天。为此就有必要设置闰月。古人很早就发现了一种简易而又精确的置闰方法:

365.2422×19=6939.6018

29.530588×235=6939.6882

这两个式子表明了19个年和235个朔望月所包含的日数大致相等。若按照1年等于12个月计算,19年仍比235个朔望月少7个月。为此,只需要在19年中安插7个闰月,平均每一年包含的日数就基本满足要求,这也就基本协调了月和年的关系(事实上,这个数值和精确值相比仍然偏大,因此后续又出现了600年221闰等设置闰月的方式)。

那么应该在这19年的什么时候安排闰月呢?这就涉及到中国古人另一项伟大的发明——二十四节气了。

(四)

古代社会以农业为本,农业生产及其依赖天时。这就要求历法能够指导人们在特定的时期进行特定的农业活动。为此,古人早已开始通过观测太阳,掌握了太阳运动的大致规律。《尚书·尧典》中说:“日中,星鸟,以殷仲春……日永,星火,以正仲夏……宵中,星虚,以殷仲秋……日短,星昴,以正仲冬。”“日中”和“宵中”的意思,就是昼夜长度相等。“日永”,即一年之中白昼长度最长,这一天就是夏至;“日短”即一年之中白昼长度最短,谓冬至。至少在商周时期,人们已经知道二分二至日的存在,春秋时期,节气至少已经达到八个。《春秋·僖公五年》载:“凡分、至、启、闭,必书云物。”杜预注:“分,春、秋分也;至,冬、夏至也;启,立春、立夏;闭,立秋、立冬。”二十四节气的出现,大概在汉初。成书于西汉早期的《淮南子·天文》里面,已经对二十四节气有了与现代相同的命名和定义。

从现代天文学的角度看,节气实际上是把地球绕太阳运动的轨道平均分成24份,15度一份,那么一共360度。每个节气就代表了地球绕太阳运动到的一个固定位置。由于节气反映了太阳运动,所以它可以比较准确地指导农事。

除此之外,节气还具有帮助设置农历闰月的作用。古人将二十四节气划分为十二节气和十二中气,两者交错排列。如春分是中气,那么清明就是节气,因此十二中气分别是:

雨水  春分  谷雨  小满  夏至  大暑 

处暑  秋分  霜降  小雪  冬至  大寒

一年的长度比365天略长,那么从一个中气到一个中气的时间,也就是把一年平均分成十二份,每一份所占据的天数,长于平均朔望月的29.5天。也就是说,每隔一段时间,就会出现没有中气的月份。

农历的置闰法就是根据将各个中气安排到各个月份里的规则制定的。如果某一个月没有中气,那么就在这个月和下一个月之间增加一个闰月,并以这个月的名称命名闰月,称为闰某月,加到这一年里面去。这种方法,从汉武帝时期就开始使用,至今已经两千多年,充分证明了其科学性和实用性。

大家可以根据已有的数据和方法计算一下,凭借二十四节气和置闰月的规则,是否能够满足19年7闰的要求呢?

设置闰月的具体时间已经无从考证,但至少在春秋时期,古人就已经掌握了一套成熟的置闰方法。《左传·文公元年》有载:“先王之正时也,履端于始,举正于中,归余于终。”意思是:从前先王制定历法,以每年的正月朔日(朔,即初一)作为开始,根据中气来确定月份。如有必要,就将多出来的天数换成闰月,放在岁终。当时的做法是置闰于终,也就是把闰月放在一年的末尾,这是二十四节气还未成熟的表现。待到汉代,岁中置闰就取代了岁终置闰,一直沿用至今。

(五)

有了这些历法的基本知识,我们就可以解决之前提到的关于中秋和国庆的问题了。考虑19个公历年和19个农历年,按照之前的计算,它们包含的天数基本相等,因此每隔十九年,就会出现农历的某一天和公历的某一天重合的现象。这也就是1982、2001和2020年的国庆和中秋都是同一天的原因。不过因为农历大小月天数不一致、公历设置闰年等原因,会出现重合现象提前和19年周期后相差一到两天的情况。例如,下一次国庆和中秋的重合只需要等到2031年,这是因为在2020-2031的11年里刚好有7个农历平年和4个农历闰年,总长度与11个公历年相等。待到19年后的2039年,国庆却和中秋差了一天。