还有五天过年

最近博客都很枯燥,总写些不着边际的技术文章,虽然自己不觉得,不过还是枯燥之极。生活枯燥了吗?没有。大概是忙了,心理牵挂多了。今年是2月9号过年,去年好像是1月几号,为什么不同的年份农历年和公历年差这么多?是啊,为什么?好吧,本文就八卦一下这个吧。

本文尝试说明白:什么是农历?农历一年到底有多长?

1. 公历年

这个相对简单。地球有公转,即绕太阳转,绕太阳一周,就是我们说的一年,也叫回归年或者太阳年。准确的说是365.2421990741天(参考),所以一般一年就是365天。

但如果就按照365天过,每隔4年,我们的”一年”就会与地球公转的周期相差约一天(4*0.2421990741),所以就有”闰年”的概念,即每隔四年我们就让2月多一天,也就是全年是366天。借此保障我们的”一年”能够准确的描述地球的公转。但如果更精确的计算,你还会发现,每四年一个闰年还会有问题,因为4*0.2421990741并不是完整的一天的,比一天少了0.0312037036天。

所以如果按照上面计算,每四年我们的”一年”就比地球公转周期多0.0312037036天。那么每隔100年,也就相差0.78(0.0312037036*25)天。于是,我们又规定,每隔100年,即使被四整除,也不闰年了。是的,还没完!!要是按照这样算,每过100年我们的”一年”仍然与地球的公转周期相差0.22天,于是我们又规定,每隔400年我们还是在闰一次。所以每隔400年,我们的”一年”与又比地球公转周期多了0.12天,是的,没玩了…各个科学界的大佬们也觉得,后面的事情不要再操心了。按照这样的计算要再过3200年,我们的”一年”才比地球的公转周期多整整一天,后面的事情让子孙后代操心吧…

总结一下,公历年正常是365天一年,闰年是366天。如果能被4整数,但不能被100整除是闰年,除此,如果恰好被400整除也是闰年。

2 农历年

农历年是根据月球绕地球会合周期来计算的,每十二个月盈月亏为一个农历年;但是,农历年又尝试通过闰月的方式去近似回归年,正是这个”近似”的粒度(按月)很粗,所以,让每年的春节日期与公历相差很多。

2.1 农历月

开始介绍农历年前,我们先看看农历月。农历月是精确的按照月亮的盈亏(望朔)来制定的。这与回归年没有什么关系。月亮绕地球的会和周期(从地球的角度观察到的天球上原来的位置所需要的时间)是29.530589天。所以农历月就是29天或者30天,至于哪个月30天,那个月29天,这依赖于精确的天文观察,规定是:”月初必须是朔日”,实际中连续大月或者小月的情况很多。

所以农历八月十五太阳总是圆的。公历就没有哪天说月亮就一定是圆的。

2.2 农历闰月

前面说得是闰年,这里说的是农历闰月,完全不是一个概念。中国古代很早就发现了,一岁(一年)是366天,而每个农历月是29.530589天,所以一岁应该有12.36826668个月才对。但是这样不好计算啊,怎么办?于是古人就这样规定,一年呢,仍然是12个农历月,但是每隔2.7154年就闰一次年,在中国最早的历法(“古六历”)就有一个类似规定”19年中设置7个闰月”,19/7=2.7143,所以这是一个很犀利的近似。

下面来回答一个很困难的问题:哪一个月是闰月?

要回答这个问题,需要先了解另一个概念:”节气”

2.3 节气

农历月是精确描述月亮盈亏的。但古代中国是一个农业大国,所以就有了一个指导农事的补充历法,节气。节气单独反映四季时节和气候,反映了地球绕太阳公转的规律。中国古代根据日晷测量,将每年日影最长的一天称为冬至,最短的一天称为夏至。白天和晚上时间相同的两天分别称为春分和秋分。剩下的根据气候等总共划分为24个节气。二十四个节气又细分为12个节气和12个中气,相互交替。

从天文上,每个节气表示地球绕太阳运行15°。

完整的节气请参考节气@wikipedia,分别是立春、雨水、惊蛰、春分、清明、谷雨、夏季、立夏、小满、芒种…

2.4 农历什么时候闰月

前面说二十四个节气,又细分为12个节气和12个中气,相互交替。如果一个农历月份中,没有中气,那么就会闰当月。老实说,这是一个非常Geek的做法,大致如此,细节略有不同,感兴趣的可以看看下面的细节。

《清史稿‧時憲四》記載:「求閏月,以前後兩年有冬至之月為準。中積十三月者,以無中氣之月,從前月置閏。一歲中兩無中氣者,置在前無中氣之月為閏。」。这段话的意思是:闰月是按照两个冬至之间的月份为一个单位计算(“实岁”)。如果一个实岁有13个望朔(12个足月),则置闰,以第一个没有中气的月份为闰月。否则不置闰。按照这个方法,如果两个冬至之间只有11个足月,则不置闰。这是从清朝开始的计算方法,更早的时候,就是使用简单的规则:“朔不得中,是謂閏月”。关于闰月还有一个”2033问题”,就是以为清朝的计算和之前的算法略有不同导致的,下面是关于”2033问题”的更详细描述:

由于2032年冬至(公历2032年12月21日)到2033年冬至(公历2033年12月21日)除去两个冬至 所在月份外,只有十一个整月,所以在此期间无需置闰,即使有无中气的月,这就是为什么2033年没有闰 七月。由于2033年冬至(公历2033年12月21日)到2034年冬至(公历2034年12月22日)除去两个冬至 所在月份外,有十二个整月,所以在此期间需要置闰。需要置闰时才采用“无中气规则”。这十二个整月中 第一个无中气的月是2033年冬至以后的那个月(2033年12月22日--2034年1月19日),它的前一个月是 农历2033年(癸丑年)十一月,所以这个月是农历2033年(癸丑年)闰十一月。这就是农历2033年(癸丑 年)闰十一月的来历。在编排农历历法时,无中气的月,并不一定要置闰。

而很多万年历认为2033年应该闰七月(无中气),按照清朝以来的规定,这是不对的。

这里其实还有另一个细节(觉得复杂可以忽略):中国古人很早就发现平均分配24个节气的时间是有一点偏差的,古人发现冬天时日晷变化更快,而夏天时日晷变化稍微慢一到两天。所以使用日晷的方式,24个节气就不是平均分配的,夏天两个节气之间最长可能是16天。这对应于天文学上的原因如下,地球位于绕日轨道的远日点,所以偏移相同角度需要花费的时间稍微多点;而冬天恰好是近日点。所以古人的天文知识是很牛逼的,应该比你这位看客牛逼一点吧。另外,平均分配节气到365天的计算方法称为”平气”,根据日晷定节气的方法叫做”定气”。

所以哪些月是闰月都是已经根据天文规律客观定好了的。最近的一些闰月:”2012 闰四月 2014 闰九月 2017 闰六月 2020 闰四月 2023 闰二月2025 闰六月 2028 闰五 月”(参考)

2.5 农历年

有了农历月和农历闰月的概念,我们就可以看看什么是农历一年了。农历一年有十二个月(如果有闰月就是十三个月),正月、二月、三月、四月、五月、六月、七月、八月、九月、十月、冬月、腊月。每年的正月初一为农历新年。

3. 农历新年与公历

因为农历年是按照月亮盈亏计算,再加上闰月的方式修正到符合地球公转周期,而闰月,一闰就是30天,所以农历年是一个公历年的近似,只是粒度很粗。虽然,粒度粗,但是从大规律上看,农历与公历对应是有一定规律的,例如,农历新年总是在2月4号之间上下波动。这个波动周期受”19年7个闰月”所以,基本上19年一个周期。那2月4号是什么特殊的日子吗?是的,这一天正好是立春。

可以这么说,农历春节总是在立春(2月4日)上下波动。下图是一个来自果壳网的波动图,非常直观:

就这些了。

参考文献:

1. 节气@wikipedia 闰月@百度百科 农历@wikipedia

2. 闰年 回归年@wikipedia

3. 2033年問題@wikipedia | 2033年閏月探究

4. 为何今年过年晚@果壳网

3 responses to “还有五天过年”

  1. 河马

    给跪了

  2. 给跪!好文章。一直觉得农历比阳历含有更多的科技

  3. 以为点错了进了科学松鼠会。

Leave a Reply

Your email address will not be published. Required fields are marked *