又是一年闰年,喜迎2月29日的到来,+1day~回到题目上的问题,闰年是四年一次吗?与很多成年人惯有认知不同的是,公历的闰年并非完全四年一次,它还有可能八年一次。可你又想过为什么这闰年有四年一闰,还有八年一闰呢?
实际在我国小学教科书中,就有闰年的计算方法。一般而言,如果年份可以用4来整除,那就是闰年,但如果遇到整百年份,需要用400整除才是闰年,否则不是。按照这一计算方法,1896年、1904年都可以被4整除,这两年都是闰年,2020年能被4整除,当然也是闰年。可同样能被4整除的1900年,却因为不能被400整除而是平年。这造成了1896年和1904年之间出现了八年一闰的现象。为什么会出现这样一个复杂的计算方法而不是直接四年一闰呢?
▶ 在一份1900年的月历中可以看到,这一年的2月份只有28天
闰年的产生原理很简单,如果地球绕太阳一周如果恰好就是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年后方法需要修正
中国传统农历与西方公历有较大差异,农历每个月的时间是与月相相一致的。现代天文学已测得,一个月相周期平均约为29.530天,农历中每个月的天数并不能设置成29.5天,因此以大小月的方式变化,大月30天,小月29天,相互弥补,使得不会偏离实际的月相情况,基本大致保证了农历十五月最圆,农历初一无月。大小月的设置也没有肉眼可见的分布规律,少数情况会出现连续三四个月都是大月。与此相比的公历并没有与月相挂钩。
▶ 农历复杂的设置就是为了修正,使每个月都尽可能与月相吻合
如果按照十二个月相周期,即十二个月为一年的话,农历一年就是354天或355天。可见如果农历单纯的以十二个月为一年,会与真正的地球围绕太阳一周的约365天为一年差距越拉越大,每过一年落下约11天。这会造成一个严重的问题,农历新年今年还在冬天,但随着年份变迁,大年初一甚至可能会移动到夏天。在***历中就是这个情况,新年会在春夏秋冬中摆动,既可能边吃西瓜边过年,也可能边烧炉子边过年。
为了解决这个问题,中国农历通过设置闰月来修正差距。以3年一闰、5年二闰、19年七闰(实际很复杂)等规则,使我们永远在冬天过年。中国农历这种既照顾了月相,又照顾了地球绕太阳实际情况的历法,准确说法应是阴阳历而不是通俗说的阴历。这里面体现了中国传统历法中对时间的兼顾和调和。