日历的基本原理
日历是以天文学的三个不同的周期作为基础的:
天:地球自转一周。
月:月球围绕地球运行一周。
年:地球围绕太阳运行一周。
如果以天作为单位,天文学的一年的平均时间是 365.2421896698 - 0.00000615359 T - 7.29E-10T^2 + 2.64E-10 T^3 天,其中 T 的表达式为 (JD - 2451545.0)/36525,JD 是 Julian天数。
如果以天作为单位,天文学的一月的平均时间是 29.5305888531 + 0.00000021621 T - 3.64E-10T^2 天,其中 T 的表达式为 (JD - 2451545.0)/36525,JD 是 Julian 天数。
世界各国的日历都是以天作为最小单位,但是年和月的算法却各不相同,一共有三大种类:
阳历:以天文年作为日历的主要周期,例如:中国公历。
阴历:以天文月作为日历的主要周期,例如:伊斯兰日历。
阴阳历:以天文月和年作为日历的主要周期,例如:中国农历。
中国公历规则
中国公历也就是世界通用的 Gregorian 历,它以年作为主要周期。为了和天文年保持同步,公历使用两种不同天数的年:
常年:365 天。
闰年:366 天。
公历年一般都是常年,只有少数年是闰年,由下面三条规则确定:
一:如果年的数目是 4 的倍数,就是闰年。
二:但是,如果年的数目是 100 的倍数,规则一就无效,仍是常年。
三:但是,如果年的数目是 400 的倍数,规则二就无效,仍是闰年。
根据规则一,公历每 4 年就比天文年多 0.03124 天:
4 Gregorian years: 3 * 365 + 366 = 1461 days
4 tropical years: 4 * 365.2421896698 =1460.9687586792 days
根据规则二,公历每 100 年就比天文年少 0.21897 天:
100 Gregorian years: 76 * 365 + 24 * 366 = 36524 days
100 tropical years: 100 * 365.2421896698 =36524.21896698 days
根据规则三,公历每 400 年就比天文年多 0.12413 天:
400 Gregorian years: 305 * 365 + 95 * 366 = 146097 days
400 tropical years: 400 * 365.2421896698 =146096.87586792 days
照此计算,公历每 2500 年就比天文年多出 1 天。
公历将一年分为十二个月。常年每月的天数分布如下:
月份1234567891011 12
天数3128313031303131303130 31
闰年的二月为 29 天。
公历的月跟天文月毫无关系。
公历还有一个跟年和月毫无关系的周期,叫作星期,每星期七天。公历第一年的第一天是星期一。
公历 400 年共有 146097 天,正好是 7 的倍数,所以星期和年每 400 年循环一次。
中国农历规则
中国农历是阴阳历,同时跟天文月和天文年同步。
农历月的天数是一个变数,有时是 29 天,有时是 30 天。
农历每月的第一天是月亮全黑的日子。
农历年由 24 个节气来确定,节气则由太阳的角度来确定。农历的第一个节气叫雨水,定在太阳的角度为 330 度的日子。其余的 23个节气分别定在太阳的角度每变化 15 度的日子。下面的表格列出了 24 个节气的名称和定义:
命称角度公历日期周期
立春3152月 4日
雨水3302月19日29.8天
惊蛰3453月 6日
春分03月21日30.2天
清明154月 5日
谷雨304月20日30.7天
立夏455月 6日
夏满605月21日31.2天
芒种756月 6日
夏至906月22日31.4天
小暑1057月 7日
大暑1207月23日31.4天
立秋1358月 8日
处暑1508月23日31.1天
白露1659月 8日
秋分1809月23日30.7天
寒露195 10月8日
霜降21010月24日30.1天
立冬225 11月8日
小雪24011月22日29.7天
大雪255 12月7日
冬至27012月22日29.5天
小寒2851月 6日
大寒3001月20日29.5天
24 个节气中有 12 个是主节气:雨水,春分,谷雨,夏满,夏至,大暑,处暑,秋分,霜降,小雪,冬至,大寒。
农历年跟天文年相差较大。农历常年有十二个农历月,有 353,354,或者 355 天,比天文年少大约 11天。为了跟天文年同步,每隔三个农历常年左右,必需设一闰年。闰年有十三个月,添加的这个月叫闰月。
农历十二个月的名称分别为:正月,二月,三月,四月,五月,六月,七月,八月,九月,十月,冬月,腊月。
农历闰年闰月的确定比较难,规则有两条:
一:冬至必须落在农历冬月。如果落不上,腊月之前就要添上一个月,成为闰年。
二:如果是闰年,冬月后边第一个不含主节气的月份定为闰月。闰月使用前一月份的名称。
农历年以 60 年为一周期,每年的名称由 10 个天干的一个字和 12 个地支的一个字排列而成。10天干为:甲,乙,丙,丁,戊,己,庚,辛,壬,癸。12 地支 为:子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥。12 地支有 12动物生肖 与其对应:鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪。
跟据历史记载,农历年已经经过了 78 个周期。今年,公历 1999 年,是第 79 个周期的第 17 年,也就是农历第 4696年。
总结起来,中国农历有下例 6 条规则:
一:月全黑规则 - 月全黑的日子是农历月的第一天。农历月周期由此而定。
二:24 节气规则 - 24 节气把天文年按太阳角度分成 24 等份,15 度一节气。这个规则确定了农历和天文年的关系。
三:冬至规则 - 冬至必须落在农历冬月。如果落不上,腊月之前就要添上一个月,成为闰年。
四:闰月规则 - 如果是闰年,冬月后边第一个不含主节气的月份定为闰月。
五:60 年周期 - 农历年以 60 年为一周期。
六:规则一和二的计算必须以中国南京紫金山天文台的观察为准。
附:
农历为什么会有闰月?——农历置闰月是为了协调回归年与农历年的矛盾。
回归年与农历年有什么矛盾呢?先记住:回归年的总长度为365.2422日,朔望月的长度为29.5306日。
十二个朔望月构成农历年,长度为29.5306×12=354.3546日,比回归年少10.88天即将近11天,每个月少0.91天,近1天。
依此,如农历年某年春节为大雪纷飞的冬天,第二年的春节就会在季节上提前11天,第16个农历年就会出现在赤日炎炎的夏天。
如按十三个朔望月构成农历年,长度为29.5306×13=383.8978日,比回归年又多出18天多。
如果按上述规定制定历法,就会出现天时与历法不合、时序错乱颠倒的怪现象——这就是矛盾。
为了克服这一缺点,我们的祖先在天文观测的基础上,找出了“闰月”的办法,保证农历年的正月到三月为春季,四月到六月为夏季,七月到九月为秋季,十月到十二月为冬季,也同时保证了农历岁首在冬末春初。
农历年中月以朔望月长度29.5306日为基础,所以大月为30日,小月为29日。为保证每月的头一天(初一)必须是朔日,就使得大小月的安排不固定,而需要通过严格的观测和计算来确定。因此,农历中连续两个月是大月或是小月的事是常有的,甚至还出现过如1990年三、四月是小月、九、十、十一、十二连续四个月是大月的罕见特例。
那么多长时间加一个闰月呢?最好的办法就是求出回归年日数与朔望月的日数的最小公倍数:我们希望m个回归年的天数与n个朔望月的天数相等,也就是应有等式:
m×365.2422=n×29.5306
在这个等式中我们不能直接求出m和n,但可以求出它们的比例:
这个比例的近似值分别为:
在这些分式中,分子表示回归年的数目,分母表示朔望月的数目。例如第六个分数式 表示19个回归年中必须加7个闰月。
19个回归年中加7个闰月的结果比较:
19个回归年=19×365.2422=6939.6118(天)
一个朔望月有29.5306天,235个朔望月=235×29.5306=6939.6910(天)
19个回归年中加7个闰月后,矛盾消除得只差:6939.6910-6939.6018=0.0892(天)——即2小时9分多,这已经是够精确的了。
所以,农历就采用了19年加7个闰月的办法,即“十九年七闰法”,把回归年与农历年很好地协调起来,使农历的元旦(春节)总保持在冬末春初。古人把235个朔望月称之为“闰周”。
农历置闰的方法可以使农历年的平均长度接近回归年,而农历中的月又有鲜明的月相特征,保持了公历和阴历两全其美的特点。
现在置闰的方法是两个冬至之间,如仅有12个月则不置闰,若有13个月即置闰。置闰的月从“冬至”开始,当出现第一个没有“中气”的月份,这个月就是闰月,其名称是在前个月的前面加一个“闰”字。
农历闰哪个月?决定于一年中的二十四个节气。
我国农历将二十四个节气分为十二个节气和十二个中气。
农历以月亮为周期(阴历),十二个月历总共约有354天;再配合年历(阳历),年历则是根据地球公转所形成的四季变化而得的周期所编制。而月历较年历短,两者相差了11天,因此,便要每19年加多7个闰月来填补误差。而决定那一个月做闰月,则依廿四节气而定,农历月份通常包含一个节气和一个中气,如惊蛰╱秋分等等,若某农历月份只有节气而没有中气,历法便会把该月多加一个月以作为闰月。以2006年为例,农历七月正好是个有节气而没有中气的月份,因此便闰七月来作调整误差。
二十四节气在农历中的日期是逐月推迟的,于是有的农历月份,中气落在月末,下个月就没有中气。
一般每过两年多就有一个没有中气的月,这正好和需要加闰月的年头相符。所以农历就规定把没有中气的那个月作为闰月。
例如2001年农历四月二十九日是中气小满,再隔一个月的初一才是下一个中气夏至,当中这一个月没有中气,就定为闰月,它跟在四月后面,所以叫闰四月。