闰年为什么四年一次还要百年不闰:格里高利历的补丁

闰年为什么四年一次还要百年不闰:格里高利历的补丁
儒略历一百二十八年错一天,格里高利补了这一刀,残差仍有三千年一天。

2100 年不是闰年,2000 年却是——「四年一闰」的规则中间横着一层「百年不闰、四百年再闰」的补丁,绕来绕去,全为一个小数点的战争:回归年并不是整齐的 365.25 天,而是约 365.2422 天,日历的平均年长必须往这个无理的方向上凑整数。

365.25 已经是不错的近似

一年 = 365 加不到四分之一,于是儒略历规定每 4 年补一个闰日,平均年长 365.25 天。和 365.2422 比,每年多出 0.0078 天,听着微不足道,折算下来约每一百二十八年就攒出一整天的偏差。罗马教廷按公元 325 年尼西亚会议定的春分日(3 月 21 日)推算复活节,到 1582 年过了 1257 年,1257×0.0078≈9.8 天,天文观测里的春分实际已经滑到 3 月 11 日。对农业是误差,对教会日期学是事故,改历被提上日程。

每 400 年只闰 97 次

格里高利十三世在 1582 年推行的方案,核心一句话:把「每 4 年一闰」的闰年数削减 3%——400 个年份里,能被 4 整除的 100 个,去掉能被 100 整除的 4 个,再捞回能被 400 整除的 1 个,净闰 97 年。平均年长算出来是 365+97/400=365.2425 天。顺带执行了一次硬删除:1582 年 10 月 4 日的下一天直接是 10 月 15 日,十天从日历上蒸发,房租、圣徒纪念日和出生证明一片混乱,英国甚至爆发「还我十一天」的抗议传说。

365.2425 与 365.2422 之差

新方案的残差是 365.2425−365.2422=0.0003 天每年,累积一天需要约 3333 年,比儒略历的 128 年精确了约 26 倍。为什么恰好是 97/400?因为目标小数 0.2422 连分数展开给出 1/4、7/29、46/190、97/400 这一串越来越准的逼近,97/400 是「规则简单」与「精度足够」的平衡点:29 年 7 闰要记 29 年的周期,4 百年规则只有两个判据。顺带一提,波斯历用 33 年 8 闰逼近 0.24242,残差更小,但规则跨不动公历的全球协调成本。

1900 与 2000 的命运为何不同

套用判据:1900 能被 4 整除、也能被 100 整除,却不能被 400 整除——平年,那一年的 2 月只有 28 天;2000 能被 400 整除——闰年。对「2 月 29 日出生」的人来说,1896 到 2004 这一百年间只有 2000 年能过一次生日。编程语言里的日期库同样踩过这坑:许多老系统的「闰年 = 能被 4 整除」简化判断,每逢整百年就翻车,千禧年前后的闰年 bug 大半源于此。

日历是工程妥协,不是定理

回头看,公历没有「完美的一年」,只有不断打补丁的近似:回归年本身还在以每世纪约半天的速度缓慢变化,三千年后又一轮修正已在路上。日常里判断闰年只需要那两句口诀,判断两日期相隔多少天、某个生日恰逢周几,交给 日期计算器万年历工具 直接查表复算,比手推「百年不闰」可靠得多。定闰年这件事和校准任何仪器同理:标准从来不在规则内部,而在规则要伺候的那个外部现实——这一回,是地球绕太阳公转的角度。

← RGB 和 HSL,选颜色该用哪个模型 时区是怎么回事:为什么「北京时间」不是北京的时间 →