为什么 2024 年会有 366 天?

By Long Luo

2024 年很快就要过去了,就在今天,我们脚下的地球已经以每秒约 30 公里的速度飞快越过了近日点,飞驰在围绕着太阳的椭圆轨道上。当 2025 年新年钟声敲响时,对于位于银河系第三旋臂边缘的这颗蓝色行星来说,不过是围绕着一颗黄矮星完成了一次再普通不过的公转,正如之前的 40 多亿次一样。而对于这颗行星上的碳基生物来说,不同的生物感受大不一样,这一刻却意味着对过去 366 个日夜 的告别与总结,也承载着对未来的期待与梦想。

和 2023 年不一样的是,我们在 2024 年要经历 366 个日夜,因为 2024 年是闰年。小学时,课本和老师都告诉我们一365 天,但是闰年却是 366 天,这多出来的一天就是 2 月 29 日,在英语中叫做 \(\textit{Leap Day}\) 。四年一闰,百年不闰,四百年再闰,这是闰年的规则。后来学习编程时,判断某一年是不是闰年也是常见的编程练习题。在学习之余,你有没有想过,为什么闰年的规则要这么奇怪呢?背后的原因是什么呢?

小学读书时,就想 2 月份很委屈, 1 月 和 3 月都是 31 天,2 月却只有 28 或者 29 天,为什么 2 月这么特别呢?为什么有的月份是 31 天,有的月份是 30 天呢?但我的老师并没有讲清楚为什么,因为当时我的老师们也不清楚为什么,我也一直到大学里读了一本天文学书才知道了这个问题的答案。

为什么 2024 年 2 月有 29 天?要回答这个问题,我们需要穿越历史的迷雾,回顾人类文明史,才能找到答案。

逝者如斯夫,不舍昼夜!

《鲁滨逊漂流记》中的鲁滨逊流落到荒岛之后第一时间就是竖起了一根大柱子,用刀子在立柱上刻上凹口当作日历。一方面是因为鲁滨逊是基督徒需要做礼拜,另外一方面也是为了记录时间。我们的现代生活是离不开钟表的,如果没有钟表来量化时间的话,我们的工作生活将失去秩序。当然鲁滨逊在荒岛上也只能过着“日出而作,日落而息”的农业社会生活,无法精确的安排工作和生活。

“朝菌不知晦朔,蟪蛄不知春秋”,我们智人的寿命足够长,不像朝生暮死的蜉蝣,也不似春生夏死的寒蝉,可以目睹很多生命的诞生、成长以及消亡,感受时间的流逝。“逝者如斯夫,不舍昼夜!”,时间的洪流永远奔涌向前,然而虽然以我们生命的长度可以跨越四季与年轮,但是依然无法触及时间的尽头。

寄蜉蝣于天地,渺沧海之一粟。哀吾生之须臾,羡长江之无穷。当然我们现在知道时间并不是均匀流逝的,也不能脱离物质而存在,但在足够宏大的尺度上,时间在均匀的流逝着。

虽然你可能没有意识到,但是我们一直都在用着天然的时钟,它们就位于我们头顶的星空。这些时钟都足够精准,地球自转的每日误差在毫秒级别,月球公转和地球公转上百年也仅有几毫秒的差别。

“日出东南隅,照我秦氏楼。”,新的一天又开始了;残月如弓,新月如眉,满月如镜,周而复始;“未觉池塘春草梦,阶前梧叶已秋声。”,四季轮回时,我们知道新的一年又来临了。

日长篱落无人过

“或许明日太阳西下倦鸟已归时,你将已经踏上旧时的归途。”每天清晨,太阳都会从东方的地平线上升起来,慢慢爬高,在正午时达到最高点,而后又慢慢落下,在傍晚时分又在西方的地平线落下,千百年来亘古不变。因为地球太大,在古人眼里,我们的大地显然是静止的,不是我们在自西向东转,而是太阳自东向西围绕着我们运动。

日出日落作为一个天然的钟表,人类直到现在依然是依照这个而作息。但一天的时间显然太长,颗粒度不够小,人们迫切需要更小的时间计量单位。在白天观察太阳,初升时太阳很低,影子很长,在正午之前太阳越来越高,影子也随之越来越短。在正午之后太阳越来越矮,影子也随之越来越长,直至日落。而古代文明中心都位于北回归线以北,一年中任何时刻影子都不会消失。

“日长篱落无人过,唯有蜻蜓蛱蝶飞。”,随着季节变化,太阳直射点北移,白天变得越来越长,太阳高度越来越高,影子也随之变短。春分这天昼夜平分,春分过后影子就会产生这样的变化;夏至这天影子最短,白天最长。然后太阳直射点逐渐南移,白天越来越短,太阳高度越来越低,影子也随之变长。冬至这天影子最长,白天最短。如此周而复始,循环往复。

尽管规律复杂,但经过我们的观察记录,我们仍然可以发现太阳的运动轨迹是有迹可循的。太阳在天空中是沿着圆形轨道运动,在一年里日出点和日落点都在变化,但每年都会重复同样的变化,如下图 1 所示:

图1. 回归线以北太阳在天空中的轨迹

上图位于回归线以北,但纬度是比较低的。越往北走,纬度越高,太阳高度越低,也更冷,如下图 2 所示为北纬 \(50^{\circ}\) 太阳路径:

图2. 北纬 50^{\circ} 太阳在天空中的轨迹

如果我们在一个圆盘中心垂直插上一根棍子,然后调整圆盘的方向使得棍子的影子都落在圆盘上,连续记录影子的运动可以发现,太阳的角位移与时间之间存在固定的比例关系,如下图 3 所示,于是我们就发明了计时工具:日晷。

图3. 一天中影子的变化

世界上很多古文明都独立地发明了日晷这种计时工具,由于不同地区的古代文明计时单位不一样,我们这里就统一为太阳旋转一周需要 \(24\) 小时,圆周为 \(360\) 度,于是我们可以得到下列关系:

\[ \frac{角位移}{时间} = \frac{360度}{24小时} = \frac{15度}{1小时} = \frac{1度}{4分钟} \]

图4. 世界上最早的日晷来自埃及的帝王谷

我们的一天是来自地球自转,日出把我们的时间均匀分割成一个个 \(24\) 小时。

月有阴晴圆缺

当太阳落在地平线之下时,收起了它的光芒,天空变暗,星星和月亮便显现出来。在夜晚,我们很难忽视月亮的存在,各个人类文明都流传着关于月亮的神话故事。我们所在的地球很幸运,和太阳的距离不远不近,又有一颗大卫星—月亮。月亮离我们足够近,在满月时很亮,在日落时升起,日出时落下,这样几乎一整天都有足够的照明时间。

月这个词当然起源于月相变化周期,新月、上弦月、满月、下弦月,周而复始。我们今天使用的公历中月份天数从 28 天到 31 天不等,月份长度已经和月相周期没有直接关系了。小时候听说“十五的月亮十六圆”,看到日历上的十五,怎么纳闷月亮怎么还是弯弯一枚?后来妈妈告诉我十五是阴历的十五。

图5. 月相变化 Moon Phase

在古代,掌握月亮周期是非常重要的,因为如果要在夜间赶路,需要尽量选择有满月照亮道路的夜晚。辛弃疾的词《西江月·夜行黄沙道中》里有一句“明月别枝惊鹊,清风半夜鸣蝉。”说的就是在满月附近那几天赶路的场景。18 世纪时在英国的伯明翰诞生了一个日后改变世界的社团:月光社 ( \(\textit{Lunar Society}\) ),而这个组织之所以用月亮命名,是因为当时还没有路灯,所以成员们在每月最临近月圆的星期日之夜时聚会,这样散会之后回家也安全方便。而对于生活在海边的人来说,满月和新月时有大潮,上弦月和下弦月时是小潮。

月相周期很容易观察,如果一个月相周期的长度与一天的长度之比是整数的话,那么对于计时来说是非常方便的。但直到太阳潮汐锁定地球之前,地球自转和月亮按照各自的规律运转,两个周期之比不是整数,因为月球一直在远离地球,地球自转也会发生改变,所以两个值时刻都在发生着微小的变化。我们不可能仅仅凭借逻辑分析把地球自转周期和月亮周期联系起来,只能通过仔细的观察和计算发现自然规律的安排,最终得到一个平均值。

伊斯兰中最著名的标志就是星月,因为阿拉伯人因为身处沙漠,白天太热,因而相比其他文明更需要依靠月光晚上在沙漠中穿行,所以月相循环对他们来说非常重要。在 8 世纪或 9 世纪时,阿拉伯人已经得到一个相当精确的结果:

图6. 星月

\[ 1个月 \approx 29.5306天 = 29天12小时44分2.9秒 \]

这个值精确到了小数点后 4 位,我看到书里的资料这么说一直很好奇古代阿拉伯人是如何得到这个精确的数字的,但目前还没有找到答案。这个精度非常重要,伊斯兰历法从公元约 622 年开始执行,迄今为止,一直严格地追随月亮的运动,而误差从未超过 1 整天。

因为月亮周期约为 29.5 天,所以不管是农历还是伊斯兰历,都分为有 30 天的大月和 29 天的小月。

那么为什么目前现行历法中一年都分为 \(12\) 个月呢?这就要从年说起了!

年年岁岁花相似

离离原上草,一岁一枯荣。野火烧不尽,春风吹又生。春天,草木吐绿,万物复苏;夏日,生长旺盛,绿意盎然。秋风渐起,草木渐黄,硕果累累,丰收的季节;冬雪覆盖,大地沉寂,等待新一轮的生命复生。

当远古人类从渔猎生活转变到农业社会,需要具备的能力就是了解季节的变换,尤其是种植谷物的时机。人误地一时,地误人一年,太早或太晚都会影响谷物生长和收成。但是在历法还没发明前,人类是如何判断耕种时机呢?最简单的方法是观察植物的生长周期,比如把草木变绿开花当作一年的开始。不过每年植物开花的时间跟气候有关,降雨、气温和阴晴日照都可能会影响花开的时间,用这种方法并不准确。

我们现在知道季节变迁来自于我们地球公转以及地轴倾角所示,如下图 7 所示。地球公转如此稳定,在上千年的尺度上,误差也就 2 分钟左右。

图7. 季节的循环

地球公转一周的时间我们称为一年,但一年长度与一天的长度之比并不是整数,实际关系是:

\[ 1回归年 \approx 365.2421990741日 = 365天5小时48分46秒 \]

这个比值其实是个无理数,所以我们只能得到一个大致精确值,永远得不到具体值。令人惊讶的是古埃及早在大约公元前 2650 年也就是 \(4650\) 年前 就得到了一年为 \(365.25\) 天,简直就是个奇迹。古埃及历法把一年定为严格的 \(365\) 天,分为 \(12\) 个月,每个月 \(30\) 天,剩余 \(5\) 天作为神的节日。而古埃及人得到 \(365.25\) 天这个值并不是通过逻辑计算,而是通过观察天上的星星得到的。

天狼星,是夜空中最明亮的一颗星,这让它在各地的古文明中都充满有趣的故事,冬季大三角中最低最亮的那颗星就是天狼星。

图8. 冬季大三角

由于地球公转,恒星每天在天上的位置都会有点不一样。因为太阳光实在太亮了,所以当恒星在天上的位置与太阳太近的时候,就会一整天都看不到那颗星。而恒星在一年当中刚好赶在日出前夕从东方升起的日子称为偕日升。在这一天之后,天狼星每天都比太阳早 4 分钟从东边升起,每天都能在夜空中多闪耀 4 分钟,所以偕日升是一颗恒星能被看到最短的日子。

图9. 天狼星偕日升 Sirius Heliacal Rising

在古埃及时代,当天狼星在拂晓出现在东方地平线上的话,就代表尼罗河将要泛滥,带来大地肥沃的泥土,提供农作物丰富的养分,让人们得以耕作。这一天大概是现在的每年的 7 月 19 日左右,也因此天狼星被用来作为古代埃及历法的标准,作为新一年的开始。

图10. 古埃及人通过观察天狼星偕日升来作为一年的开始

古埃及人发现大约 \(4\) 年之后,天狼星就会晚一天偕日升,认识到了每 \(4\) 年应该加一个闰年。但是古埃及人将天狼星偕日升这个日子会每 \(4\) 年推后一天,这样在 \(365 \times 4 + 1 = 1461\) 个埃及年之后,太阳会再次在年初和天狼星偕日升,也就得到了地球公转周期为: \(365 \times \frac {1461}{1460} = 365.25\)

这些偕日升的星星,其实跟地球的季节变化没有因果关系,它们只是在对的时间,出现在对的位置。不过为什么不同地方的人会发展出类似的方法呢?主要是这个方法简单好用,不需要精确的算出太阳运行周期,只要早起看星星就行。

古代科技不发达,天文学成为了人们理解自然和预测未来的重要工具。会看星星的人类祖先才能建立农业社会,可以比其他人占优势。农耕稳定生产粮食,足够粮食能养活更多人,这群人再建立社会制度,发展成强大的文明。其实,我们都受益于会看星星的祖先,会看星星的人比较容易存活下去。

一年为什么分为 12 个月?

大自然为人类提供了三个各自独立的计时标准:日、月和年,但把这三个标准统一起来却并不是件容易的事。这三者两两比例都是无理数,我们只能得到一个大致的精确值。

我们已经知道一年约为 \(365.24\) 天,一月约为 \(29.5306\) 天,那么 \(\dfrac {365.24}{29.5306} = 12.3682\) ,但是余数 \(0.3682\) 怎么处理呢?直接忽略的话,几十年的尺度里可能无所谓,但是几百年下来就会偏差特别大,必须修正。那么如何修正这个值呢?

从数学角度来看,一年约为 \(365.24\) 天,而 \(365 = 5 \times 73\)\(366 = 2 \times 3 \times 61\) ,但遗憾的是, \(73\)\(61\) 都是质数,而且是大质数。 人类天生就不喜欢大质数,因为不好均分,要是一年是 \(360\) 天就好了:

\[ 360 = 2 \times 2 \times 2 \times 3 \times 3 \times 5 = 12 \times 30 \]

这样可以被 \(2, 3, 4, 5, 6, 8, 9, 10, 12 \dots\) 整除,这也是古巴比伦人为什么将一个圆周分为 \(360\) 度的原因。

不过我们生活地球并不是这样,但是几乎所有历法 1 年都是分为 12 个月,大概还是因为月份是质数的话,一年就无法均分了。对于余数部分则打上不同的补丁来修正,比如各种历法在某些月份增加天数或者增加某个月份来修正。

为什么有闰年?

闰,本意是余数,闰年,英语中叫 Leap Year ,而 Leap 是跳跃的意思,这个含义是怎么来的呢?

之前我们已经知道我们定义地球绕太阳运动一圈的时间就是一年,这个回归年约为 \(365.24219\) 天。地球公转极其稳定,其实每一年都是一模一样的时间,本质上闰年也不会多一天。但是显然把一年的天数设置为整数更加方便,不然谁记得住呢!四舍五入取整之后的一年便是 \(365\) 天,而实际上每年都会多出 \(0.24219\) 天, \(4\) 年下来就会多出 \(0.24219 \times 4 = 0.96876\) 天,约等于多出一天,看下面几张图会理解的更清楚一些。

\(1\) 年,我们会延后 \(0.24\) 天:

第 1 年延后 0.24 天

\(2\) 年,我们会延后 \(0.48\) 天:

第 2 年延后 0.48 天

\(3\) 年,我们会延后 \(0.73\) 天:

第 3 年延后 0.73 天

\(4\) 年,我们会延后 \(0.97\) 天:

第 4 年延后 0.97天

当到了第 \(4\) 年时,为了和真实时间看齐,我们要把这一天补回来,于是制定了闰年加一天的规则。这时可能有人会问,既然是为了提高生活效率,那直接不补每年天数都一样多岂不是更加方便。但是他们明显小看了每 \(4\) 年差一天的威力,积少成多之下会产生巨大影响。在不补的情况下每过 \(100\) 年,就会相差 \(100 \times 0.24219 = 24.219天\) ,这已经接近一个月的差距了!农作物差上一个月,收成就别指望了!

400年后已经延后了一个季度了

所以闰年必须有,哪怕每四年只差不到一天,也必须补回来。但是为什么又会 \(100\) 年不闰, \(400\) 年再闰的规则?为什么 \(100\) 年时的那一天为什么又不用补了呢?

根据之前的数据,我们可以得知每 \(4\) 年就会比实际时间少了 \(0.96876\) 天,但是闰年是直接补充一整天,这就导致了在出现了闰年规则后,每 \(4\) 年反而多出了 \(1 - 0.96876 = 0.03124\) 天。这样每过 \(128\) 年就会多出了 \(0.03124 \times 128 \div 4 = 0.99968\) 天,为了方便计算,在每一百年的时候再减掉一天,也就是整百年份的时候把闰年变回普通年。

闰年之后则会超前 0.03 天

同样再做一次更加精确的计算,每一百年就会比实际的时间少了 \(1 - 0.03124 \times 100 \div 4 = 0.219\) 天,那么每四百年就少了 \(0.219 \times 4 = 0.876\) 天,那就再把这一天补回来,也就是年份为 \(400\) 的倍数的时候又需要再一次变成闰年。所以目前闰年的完整规则为什么会这么复杂,年份不能被 \(4\) 整除时不是闰年,年份能被 \(4\) 整除但不能被 \(100\) 整除时是闰年;年份能被 \(100\) 整除但不能被 \(400\) 整除时不是闰年;年份能被 \(400\) 整除时是闰年。

其实由上面的计算可以知道其实每 \(400\) 年还是多了 \(1 - 0.876 = 0.124\) 天,所以每 \(4000\) 年还会多出 \(1.24\) 天,也许到时候会再打上更细致的补丁。今年才公元 2024 年,离公元 4000 年还有 1000 多年,也许人类不久之后换了历法也不一定。

回到开头的问题,因为我们通过额外添加天数,所以使得日期产生了跳跃,这就是 Leap Year 的由来。

为什么 2 月有 29 天?

目前国际通用的历法是公历,也叫格里历,大家也可能叫阳历,但是公历只是阳历的一种。小时候不太懂什么阳历阴历的,阳历是根据地球呈现出太阳直射点的周期性变化所制定的历法,而阴历则是根据月亮的周期。

之前月相的章节提过,对于阿拉伯人来说,月亮非常重要,伊斯兰历是一种纯粹阴历,也是现今仍在使用的历法中唯一的纯阴历。中国现行的农历则兼顾了太阳周期和月亮周期,属于阴阳合历,是 400 多年前明朝由欧洲传教士汤若望和中国第一批天主教徒合力编撰的。犹太历也兼顾了太阳周期和月亮周期,和农历一样通过闰月实现和实际的太阳年一致。

一年有 365 天,平均分为 30 天,那么只需要 5 个月是大月,也就是 31 天,而现在的历法是 1 月,3 月, 5月,7月, 8月, 10月,12月都是 31 天,而平年 2 月只有 28 天?为什么 7 月 和 8 月都是 31 天呢?要回答这个问题,我们需要回到回顾过去,回到古罗马时期,才能找到答案。

旧罗马历法时一年只有 10 个月,比现行的公历少了2个月,冬天是没有月份名称的。旧罗马历的月份算法从春天的March(3月)开始,持续到年底的December(12月)。(古罗马认为偶数不祥,为了避免偶数不吉利,罗穆卢斯为大部分月份设定了奇数天数(29或31天),但为了全年天数平衡,2月被赋予28天,成为唯一的偶数月份。2月的特殊地位还和罗马的宗教传统有关:2月被视为祭祀亡灵和赎罪的月份,因此是一个“缩短”的月份。

古罗马时期,罗马历法在政治目的的影响下经常遭到任意篡改。由于教皇通常是政客,而且罗马行政长官的任期与日历年相对应,这种权力很容易被滥用:教皇可以延长他或其政治盟友在任的年份,或者拒绝延长其对手在任的年份。到了凯撒大帝执政时,历法已被改得面目全非,为了解决这个问题,他采纳埃及托勒密王朝亚历山大的希腊数学家兼天文学家索西琴尼计算的历法,按照太阳周期制定了新的历法,也就是儒略历,在公元前45年1月1日起执行,以取代旧罗马历法。新历法改为 12 个月,但仍然保留了之前历法月份天数不同的规则。七月Julius,原名Quintilis,是“第五”的意思。由于凯撒在该月出生,经元老院一致通过,将此月改为凯撒的名字“Julian” 。

之后凯撒的继承人屋大维,是最伟大的罗马皇帝之一。8月,原名Sextilis,旧罗马历中第六个月,屋大维在建立罗马帝国的过程中打的几次辉煌胜仗都发生在 8 月,其中也包括攻陷亚历山大港、征服埃及之役。Augustus本是元老院赐封给他的称号,意为“神圣伟大”,从此屋大维也被称为奥古斯都 Augustus。后来屋大维死于此月,元老院于是将此月改为他的称号“奥古斯都”。

因为旧的儒略历每四年都设置了一个闰年,通过上一节的计算我们知道时间足够长的话,每 100 年会偏差达到将近一天,1500年之后偏差就会达到 10 天。16世纪时,春分已经向前移动了10天。春分实际上在3月21日,在日历上却变成了3月11日。对于基督徒来说,这是个严重的问题,因为当时一年中最重要的节日是复活节,而复活节的日期是依靠春分确定的:春分后的第一个满月后的第一个星期天。

为了使复活节回到正确的日期,教皇格里高利十三世于1582年规定,把日历中的日期后移 10 天,同时把闰年的规则修订为现行的规则,以确保这样的问题不再出现,这就是我们现行公历格里历的由来。

总结

2024 年即将结束,这一年里我们经历了 366 天。2024年2月有29天,这并不是偶然的结果,而是历经历史演变和历法改革的产物,是人类对自然规律更深刻的认识,是人类智慧和文明进步的体现。

参考文献

  1. 天文学 Astronomy
  2. Leap Day
  3. 闰年 Leap Year
  4. 季节 Season
  5. Daniel Defoe: 《鲁宾逊漂流记》
  6. Eric Chaisson/Steve McMillan: Astronomy: 《天文学与生活》
  7. Michael Hoskin: 《The Cambridge Illustrated History of Astronomy 剑桥插图天文学史》
  8. Camille Flammarion: 《大众天文学》
  9. 太阳 Sun
  10. 太阳路径 Sun Path
  11. 计时工具的历史 Timekeeping devices
  12. 日晷 Sundial
  13. 日晷的历史 History of Sundials
  14. 月亮 Moon
  15. 月相 Moon Phase
  16. 月光社 Lunar Society
  17. 潮汐 Tide
  18. 星月
  19. 伊斯兰历 Islamic calendar
  20. 年 Year
  21. 天狼星 Sirius
  22. 天狼星周期 Sothic cycle
  23. 偕日升 Heliacal rising
  24. A Real Scorcher! — Sirius At Heliacal Rising
  25. 儒略年 Julian calendar
  26. 公历 Gregorian calendar
  27. 阳历 Solar calendar
  28. 回归年 Tropical year
  29. 农历 Chinese calendar
  30. 利玛窦 Matteo Ricci
  31. 汤若望 Adam Schall
  32. 犹太历 Hebrew calendar
  33. 尤利乌斯·恺撒 Julius Caesar
  34. 7月 July
  35. 8月 August
  36. 屋大维 Augustus 38 Interplanetary: This is why we have Leap Years
  37. 2月 February
  38. Why February has only 28 days? Nothing more scientific than Roman superstition…