2月29日,详谈闰年操作系统,内含小学数学高能 | 地图看世界
今年2月29日我发红包吼不吼啊?当然不吼,因为今年不是闰年,明天也不会是2月29日。闰年这个几乎小学生皆知的常识,又有你哪些不知道的原理呢?
首先我们谈一个很基础的问题,如果你认为闰年就是每四年一次,那就正好需要补一下这个知识点。事实上,闰年的计算方法是“四年一闰,百年不闰,四百年再闰”,这就造成了在一些特殊年份,会出现八年一闰的现象。例如1896年为闰年,四年之后的1900年并不是闰年,直到再过四年之后的1904年才是闰年。也就是一般情况下年份能被4整除即为闰年,而整百年的年份要被400整除才为闰年。
▍用计算机语言描述的简单的闰年判断(为什么是简单的,后面详述)
闰年的产生原理很简单,如果地球绕太阳一周如果恰好就是365天,那就不需要闰年这种东西了。但不凑巧的是,地球绕一周需要约365.2422天(365天5小时48分45.5秒,365又10463/43200天),我们现行的时间体系没法使一年等于一个存在小数的天数,只好把小数部分暂时存起来,攒成整数后再拿出来过掉,这就是闰年的原理。
▍闰年的原理
但这约365.2422天(365又10463/43200天)也很尴尬,如果绕一周需要365.25天,那每4年正好多出1天,那就太棒了。可这0.2422天怎么处理?365 又10463/43200天,这意味着每过43200年应当有10463个闰年来补上10463天,这才完美的时间系统跟上天文系统。
但实际中上述43200年10463闰的方法过于变态。为了我们的生活方便,我们暂且按每4年一闰来补上少过的时间,这样计算:1-0.2422×4=0.0312,可见每四年一闰又会导致四年后我们的时间过快了0.0312天。那过了400年后,我们的时间会过快了3.12天。为了避免出现过快3.12天,所以才加上了我们前边提到的“百年不闰,四百年再闰”的特殊规定。
细心的读者肯定注意到了,用“百年不闰,四百年再闰”的方法,使3.12天的误差成功缩短到了0.12天,每400年会产生0.12天的误差,这已经是很小了。可把这0.12天的误差放到历史的长河中,它也会逐渐变大。可以预见用“百年不闰,四百年再闰”的方法,3200年后,这0.12天的误差会被放大到接近1天(约0.96天)。因此在公元3200年本该闰年的这一天变为平年。
在历法研究中,对闰年的处理有着全面的处理,公元3200年不是闰年而是平年。接下来的时间节点是公元153600年(闰年)、公元36864000年(平年)……但我们日常生活中往往涉及的时间跨度有限,且上千、上万年的跨度中,地球绕太阳的实际时间情况会发生微小变动。因此一般书籍资料中对闰年的判断直接采用了“四年一闰,百年不闰,四百年再闰”的简略方法。
▍一些万年历对3200年标注为闰年是错误的,多是其编程方法用了简单的闰年判断
▍相对比较全的闰年判断方法,当然公元3200年后方法需要修正
本文涉及的时间皆为公历(格里高利历),我国传统农历对闰年的处理要复杂得多,以后有时间再介绍农历对闰年的处理。
参考资料:
Lerner, Ed. K. Lee; Lerner, Brenda W. Calendar. The Gale Encyclopedia of Science. Detroit, MI: Gale. 2004.