农历中闰年闰月的算法

转自:http://www.bulibuqi.com/redirect.php?tid=2775&goto=lastpost

 

太阳日 :星期日
http://baike.baidu.com/view/411644.htm

恒星日 :地球自转一周实际所需的时间,或春分点两次经过同一子午圈所需的时间,也就是某一个恒星两次经过同一子午线所需的时间。一个恒星日等于23小时56分4秒。
http://baike.baidu.com/view/25969.htm

恒星年 :地球绕太阳一周实际所需的时间,也就是从地球上观测,以太阳和某一个恒星在同一位置上为起点,当观测到太阳再回到这个位置时所需的时间。一个恒星年等于365天6小时9分10秒。
http://baike.baidu.com/view/25932.htm

回归年 :从地球上看,太阳绕天球的黄道一周的时间,即太阳中心从春分点到春分点所经历的时间,又称为太阳年。1回归年 = 365.24220日 = 365日5小时48分45.5秒。
http://baike.baidu.com/view/49345.htm

 

中国旧历农历作为阴阳历的一种,每月的天数依照月亏而定,一年的时间以12个月为基准,平年比一回归年少约11天。为了合上地球围绕太阳运行周期即回归年,每隔2到4年,增加一个月,增加的这个月为闰月。闰月加到哪个月,以农历历法规则推断,主要依照与农历的二十四节气相符合来确定。在加有闰月的那一年有13个月,历年长度为384或385日,这一年也称为闰年。如1984年鼠年的农历中,有两个十月,通常成为前十月和后十月(即闰月)。农历闰年闰月的推算,3年一闰,5年二闰,19年七闰;农历基本上19年为一周期对应于公历同一时间。如公历的2001年5月27日、1982年5月27日和1963年 5月27日这个日子,都是闰四月初五。
  公历1982年至2042年与农历闰年闰月对照表:
  1982年5月23日 闰四月小 壬戊年
  1984年11月23日 闰十月大 甲子年
  1987年7月26日 闰六月大 丁卯年
  1990年6月23日 闰五月大 庚午年
  1993年4月22日 闰三月大 癸酉年
  1995年9月25日 闰八月大 乙亥年
  1998年6月24日 闰五月小 戊寅年
  2001年5月23日 闰四月大 辛巳年
  2004年3月21日 闰二月大 甲申年
  2006年8月24日 闰七月大 丙戊年
  2009年6月23日 闰五月大 己丑年
  2012年5月21日 闰四月小 壬辰年
  2014年10月24日 闰九月小 甲午年
  2017年7月23日 闰六月大 丁酉年
  2020年5月23日 闰四月小 庚子年
  2023年3月22日 闰二月大 癸卯年
  2025年7月25日 闰六月大 己巳年
  2028年6月23日 闰五月大 戊申年
  2031年4月22日 闰三月大 辛亥年
  2033年8月25日 闰七月大 癸丑年
  2036年7月23日 闰六月小 丙辰年
  2039年6月22日 闰五月大 己未年
  2042年3月22日 闰二月大 壬戊年

农历的历年长度是以回归年为准的,但一个回归年比12个朔望月的日数多,而比13个朔望月短,古代天文学家在编制农历时,为使一个月中任何一天都含有月相的意义,即初一是无月的夜晚,十五左右都是圆月,就以朔望月为主,同时兼顾季节时令,采用十九年七闰的方法:在农历十九年中,有十二个平年,为一平年十二个月;有七个闰年,每一闰年十三个月。

为什么采取“十九年七闰”的方法呢? 一个朔望月平均是29.5306日,一个回归年有12.368个朔望月,0.368小数部分的渐进分数是1/2 、1/3 、3/8 、4/11 、7/19 、46/125, 即每二年加一个闰月,或每三年加一个闰月,或每八年加三个闰月……经过推算,十九年加七个闰月比较合适。因为十九个回归年=6939.6018日,而十九个农历年(加七个闰月后)共有235个朔望月,等于6939.6910日,这样二者就差不多了。

七个闰月安插到十九年当中,其安插方法可是有讲究的。农历闰月的安插,自古以来完全是人为的规定,历代对闰月的安插也不尽相同。秦代以前,曾把闰月放在一年的末尾,叫做“十三月”。汉初把闰月放在九月之后,叫做“后九月”。到了汉武帝太初元年,又把闰月分插在一年中的各月。以后又规定“不包含中气的月份作为前一个月的闰月”,直到现在仍沿用这个规定。

为什么有的月份会没有中气呢? 节气与节气或中气与中气相隔时间平均是30.4368日(即一回归年排65.2422日平分12等分),而一个朔望月平均是29.5306日,所以节气或中气在农历的月份中的日期逐月推移迟,到一定时候,中气不在月中,而移到月末,下一个中气移到另一个月的月初,这样中间这个月就没有中气,而只剩一个节气了。

上面讲过,古人在编制农历时,以十二个中气作为十二个月的标志,即雨水是正月的标志,春分是二月的标志,谷雨是三月的标志……把没有中气的月份作为闰月就使得历月名称与中气一一对应起来,从而保持了原有中气的标志。

从十九年七闰来说,在十九个回归年中有228个节气和228个中气, 而农历十九年有235个朔望月,显然有七个月没有节气和七个月没有中气,这样把没有中气的月份定为闰月,也就很自然了。

农历月的大小很不规则,有时连续两个、三个、四个大月或连续两个三个小月,历年的长短也不一样,而且差距很大。节气和中气,在农历里的分布日期很不稳定,而且日期变动的范围很大。这样看来,农历似乎显得十分复杂。其实。农历还是有一定循环规律的:由于十九个回归年的日数与十九个农历年的日数差不多相等,就使农历每隔十九年差不多是相同的。每隔十九年,农历相同月份的每月初一日的阳历日一般相同或者相差一、二天。每隔十九年,节气和中气日期大体上是重复的,个别的相差一、两天。相隔十九年闰月的月份重复或者相差一个月。

你可能感兴趣的:(算法,PHP)