当前位置:文档之家› 中国现行的历法有阳历和农历

中国现行的历法有阳历和农历

中国现行的历法有阳历和农历。

阳历大家应该都很熟悉,我就在这儿讲讲农历。

一个回归年的长度为365.2422天,一个朔望月的长度是29.5306天。

12个朔望月构成一年,就是354.3672天,与一个回归年差了10.875天。

若13个朔望月构成一年,又多了18.6556天。

因此,农历就采用了加闰月的办法。

农历是“十九年置七闰”,19个回归年的长度是6939.6018天,235个朔望月的长度是6939.6910天,只差一点点,很精确了。

农历的置闰办法是:若两个冬至之间有11个月(刨去两个冬至所在的月),那就什么事也没有。

如果是12个月,那就把那个无中气的月作为闰月。

(二十四节气里,雨水、春分、谷雨、小满、夏至、大暑、处暑、秋分、霜降、小雪、冬至、小寒为中气,其余的为节令)例如,2006年是闰年,闰七月。

闰七月只有立秋这一个节气,闰七月十四。

由于之前那个月是七月,所以它就是闰七月。

农历规定:由于朔望月的长度是29.5306天,所以大月为30天,小月为29天。

农历的大小月安排特别没有规律,因为要保证每一个月的初一月相是新月,即“朔”。

到了十五日(大月为十六日)是满月,即“望”。

不过,仍然可以根据公历日期推算出农历日期。

将公历年份数减去1901,得到4Q+R(Q、R为整数,R<4。

)那么农历日期即14Q+10.6(R+1)+年内累计日数-29.5N(N为整数)。

举例说明:今天是2011年3月23日,农历日期计算过程如下:2011-1901=110,得到Q=27,R=2.再用公式:14*27+10.6*3+82=491.8。

将491.8除以29.5,商为16,余数为19.8。

(把这个小数除法当做整数有余数除法来算,最后的余数除以10)。

则整数部分19就是农历日期。

再查查日历,今天是农历辛卯年二月十九日。

一、口诀:乘五除四九加日,双月间隔三十天。

一二自加整少一,三五七八十尾前。

二、举例说明:例一:1996年1月16日(96×5+96÷4+9+16)÷60=8余49,49即为六十甲子序数。

9对应天干壬,49除12余1对应地支子,对应干支为“壬子”。

例二:1997年2月16日(97×5+97÷4+9+16+30+2)÷60=9余26,26即为六十甲子序数。

6对应天干己,26除12余2对应地支丑,对应干支为“己丑”。

例三:1998年3月16日(98×5+98÷4+9+16)÷60=8余59,对应干支为“壬戌”。

例四:1999年4月16日(99×5+99÷4+9+16+30+1)÷60=9余35,对应干支为“戊戌”。

例五:2000年7月16日(100×5+100÷4+9+16+2)÷60=9余12,对应干支为“乙亥”。

例六:20001年10月16日(101×5+101÷4+9+16+4+30)÷60=9余49,对应干支为“壬子”。

三、注解:第三句中的“整少一”,为能被4整除之年一二月份比其他三年都要少加一;第四句反映的是大月规律,即8月加3、11月加5,依此类推)。

在介绍求年干支和日干支的公式前,先把干支的特点介绍一下。

干支是天干和地支的组合。

天干有十个,即甲、乙、丙、丁、戊、己、庚、辛、壬、癸;地支有十二个,即子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。

天干和地支从“甲子”开始,按顺序逐一相配,各用到最后一个时,再从第一个开始继续相配,就形成了六十个干支,也称“六十花甲子”。

为什么是六十个干支呢?这个从数学上很容易回答。

根据干支的构成条件,其循环周期必然是天干数和地干数的最小公倍数。

而60正是10和12的最小公倍数。

如果我们把“甲子”编为1号,“乙丑”编为2号,这样编下去,就可以得到一个干支和序号的对照表,如下:1.甲子2.乙丑3.丙寅4.丁卯5.戊辰6.己巳7.庚午8.辛未9.壬申10.癸酉11.甲戌12.乙亥13.丙子14.丁丑15.戊寅16.己卯17.庚辰18.辛巳19.壬午20.癸未21.甲申22.乙酉23.丙戌24.丁亥25.戊子26.己丑27.庚寅28.辛卯29.壬辰30.癸巳31.甲午32.乙未33.丙申34.丁酉35.戊戌36.己亥37.庚子38.辛丑39.壬寅40.癸卯41.甲辰42.乙巳43.丙午44.丁未45.戊申46.己酉47.庚戌48.辛亥49.壬子50.癸丑51.甲寅52.乙卯53.丙辰54.丁巳55.戊午56.己未57.庚申58.辛酉59.壬戌60.癸亥细心观察这张表,不难发现,由序号得到对应干支是很容易的,序号除以10的余数就是天干的序数(如果余数是0,则为最后一个天干癸),序号除以12的余数就是地支的序数(如果余数是0,则为最后一个地支亥)。

比如37号干支,因为37 mod 10=7(mod表示取余数),对应的天干是庚,37 mod 12=1,对应的地支是子,所以37号干支就是庚子。

显然,一个整数除以10的余数就是它的个位数,这就使求天干更方便了。

而由干支推它的序号,也不困难。

这其实就是一个同余方程组的求解问题,我们用初等数论中的中国剩余定理就可以解决。

比如要算戊午的序号是多少,根据上面由序号得到对应干支的原理,很容易得到如下方程组:{ x mod 10 = 5{ x mod 12 = 7.其中x是待求的干支序号。

根据中国剩余定理,有:x ≡ 6 * 5 - 5 * 7 (mod 60) = 55,即戊午的序号是55.这和上面的对照表的是一致的。

一般地,若天干的序号为m,地支的序号为n,则干支的序号为:x ≡ 6m - 5n (mod 60) (1)简单点说,如果6m-5n的结果是正数,这个数就是干支的序号;如果是负数,把它加上60就是干支的序号。

了解了干支及其序号的相互推算,下面我们先来介绍年干支的求算。

需要说明的是,干支纪年纪的是农历年,而不是公历年。

但因为农历年的岁首和公历年的岁首相隔较近,使农历年总是和某一公历年的大部分重合,因此,通常也用公历年的年份表示和它大部分重合的农历年。

这样我们就很容易给出农历年的干支序号为:x = (Y-3) mod 60,(2)其中Y是年份。

得到了干支序号x,就可以求出相应的干支来。

比如2004年的干支序号:x = (2004-3) mod 60 = 2001 mod 60 = 21,21 mod 10=1,天干为甲,21 mod 12=9,地支为申,因此,2004年是甲申年。

细心观察,我们可以发现,其实用Y-3直接除以10,就可以得到天干,用Y-3直接除以12,就可以得到地支。

这是因为x = (Y-3) mod 60等价于Y-3 = 60 * n + x,其中n是Y-3除以60的商数。

等式两边同时除以10,余数也必然相等。

而右边第一项是60的倍数,自然也是10的倍数,能够被10整数,于是Y-3除以10的余数就必然等于x除以10的余数。

因此,其实我们完全用不着先求干支的序号,而可以分别求天干和地支,合起来就是干支,这样就减少了一步运算。

而对于年份的天干,同样只须看末尾一位。

末尾为4的年份的天干总是甲,末尾为5的年份的天干总是乙……依次类推。

再来看日干支的求算。

我们可以仿照星期的求算,得到一个比较直观的计算日干支的公式如下:G = (Y-1)*5 + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D + 15,(3)其中Y是年份,D是累积天数,[...]表示取商数,也就是只取计算结果的整数部分。

把G除以60,余数就是干支的序号。

或者把G除以10或12,可以直接得到日天干和日地支。

不过,和形式相似的求星期的公式一样,这个公式还不够简炼,特别是第一项(Y-1)*5,在Y为四位数年份时,计算出来的结果是一个较大的四位数或五位数,口算很不方便。

我们用推导蔡勒公式的办法,可以改进这个公式。

先来看和年份有关的部分的改进。

我们知道,按公历的置闰规则,一个世纪的总天数可能是36524天,或36525天。

如果这个世纪中末尾为00的年份是闰年,这个世纪就只有36525天;否则就只有36524天。

我们不妨称有36524天的世纪为“平世纪”,有36525天的世纪为“闰世纪”。

对于平世纪,因为36524 mod 60 = 44,所以,每过一个平世纪,同一天的干支就向后推进44个序号。

同样,每过一个闰世纪,同一天的干支就向后推进45个序号。

这就使我们很容易得到一个计算每个世纪第一年(年份末尾为01)3月1日的公式:G = 44C + [C/4] + 15,(4)其中C是世纪数减一。

而计算任一年3月1日的干支的公式也可以很快得到:G = 44C + [C/4] + 5(y-1) + [y/4] + 15,即G = 44C + [C/4] + 5y + [y/4] + 10,(5)其中y是年份后两位数字。

下面我们再列出每月天数:月份1月2月3月4月5月6月7月8月9月10月11月12月---------------------------------------------------------------------------天数31 28(29) 31 30 31 30 31 31 30 31 30 31减30后的剩余天数1 -2(-1) 1 0 1 0 1 1 0 1 0 1如果把1月和2月看成是上一年的13月和14月,同样可以得到下面的式子:D’ ≡ [3*(M+1) / 5] + d - 2 (mod 10) (6)及D’ ≡ [3*(M+1) / 5] + d - 2 + i (mod 12) (奇数月i=0,偶数月i=6),(7)其中,D’是从3月1日开始算起的累积天数,M是月份,d是日数。

把(6)(7)两式和(5)式合起来,再进行适当的化简,就得到了计算公历任意一天的天干和地支的公式:g = 4C + [C/4] + 5y + [y/4] + [3*(M+1) / 5] + d - 3;(8)z = 8C + [C/4] + 5y + [y/4] + [3*(M+1) / 5] + d + 7 + i (奇数月i=0,偶数月i=6)(9)如果先求得了g,那么z = g + 4C + 10 + i (奇数月i=0,偶数月i=6).(10)g的个位数就是天干序号,z除以12的余数就是地支序号。

这里需要再次强调:1月和2月是当做上一年的13月和14月来算的,因此C和y也要按上一年的年份来取值。

我们可以把(8)(9)两式和蔡勒公式对比一下:W = -2C + [C/4] + y + [y/4] + [13*(M+1) / 5] + d - 1,可以看出它们的形式非常相似,区别仅仅是几个常数的不同。

相关主题