闰年
历法中的名词
阳历和阴历中有闰日的年份,或阴阳历中有闰月的年份。如公历2024年为闰年,2月有29天,全年366天;农历癸卯年(2023年)为闰年,闰二月小,该月只有清明,无中气,全年13个月。伊斯兰教历1428年(公历2007——2008),全年366天为闰年。
基本解释
凡公历中有闰日(2月29日)的年份,阴阳历中有闰月的年份。
1582年以来公历的置闰规则:
普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。
1582年以前的惯例:四年一闰;如果公元A年的A(正数)能被4整除,那么它就是闰年;如果公元前B年的B(正数)除以4余1,那么它也是闰年。
出处
产生原因
通常的解释是说一年有多少天多少小时多少分钟,取整数365天后,还有多余的,累积达到一天(24小时)后,就多加一天,多加一天的这一年就是闰年。这个解释只是告诉大家怎么计算,是人为设置的东西。
最根本的原因是:地球绕太阳运行的周期为365天5小时48分46秒(合365.24219天),即一回归年(tropical year)。公历的平年只有365天,比回归年短约0.2422天,所余下的时间约为每四年累积一天,故在第四年的2月末加1天,使当年的时间长度变为366天,这一年就是闰年。现行公历中每400年有97个闰年。按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样,每128年就会多算出1天,经过400年就会多算出3天多。因此,每400年中要减少3个闰年。所以公历规定:年份是整百数时,必须是400的倍数才是闰年;不是400的倍数的世纪年,即使是4的倍数也不是闰年。
这就是通常说的:四年一闰,百年不闰,四百年再闰。例如:2000年是闰年,2100年则是平年。
分类
闰年包括在公历(格里历)或夏历中有闰日的年份和在中国农历中有闰月的年份。
公历闰年
地球绕太阳的运行周期为365天5小时48分46秒(合365.24219天),即一回归年(tropical year)。公历的平年只有365天,比回归年短约0.2422天,每四年累积约一天,把这一天加于2月末(即2月29日),使当年的时间长度变为366天(1~12月分别为31天、29天、31天、30天、31天、30天、31天、31天、30天、31天、30天、31天),这一年就是闰年。
需要注意的是,公历是根据罗马人的“儒略历”改编而成的。由于当时没有了解到每年要多算出0.0078天的问题,从公元前46年到16世纪,一共累计多出了10天。为此,当时的教皇格列高利十三世,将1582年10月5日改为10月15日,并开始了新的闰年规定。即规定公历年份是整百数的,必须是400的倍数才是闰年,不是400的倍数的年份就是平年。比如,1700年、1800年为平年,2000年为闰年。此后,平均每年长度为365.2425天,约4年出现1天的偏差。按照每四年一个闰年计算,平均每年就要多算出0.0078天,经过400年就会多出大约3天来,因此,每400年中要减少3个闰年。闰年的计算,归结起来就是通常说的:四年一闰;百年不闰,四百年再闰。
1950~2050年之间的闰年:
1952、1956、1960、1964、1968、1972、1976、1980、1984、1988、1992、1996、2000、2004、2008、2012、2016、2020、2024、2028、2032、2036、2040、2044、2048。
由于地球的自转速度逐渐降低,而公转速度则相对更加稳定,所以上述的系统经过更长的周期也会发生微小的误差。据计算,每8000年会有一天的误差,所以英国的天文学家约翰·赫歇耳提议:公元4000年为平年,以此类推,公元12000年、20000年也是平年。但此提议从未被正式采纳。原因是到了4000年,地球自转的精确速度并非如今可以预测,所以届时参照真实数据方可做出判断。因此,在长远的将来,针对闰年的微小调整应该不是由预定的系统决定,而是随时不定性的。
农历闰年
中国的旧历——农历作为阴阳历的一种,每月的天数依照月亏而定,一年的时间以12个月为基准,平年比一回归年少约11天。为了合上地球绕太阳运行的周期(即回归年),每隔2~4年,增加一个月,增加的这个月为闰月。闰月加到哪个月,以农历历法规则推断,主要依照与农历的二十四节气相符合来确定。在加有闰月的那一年有13个月,历年长度为383~385天,这一年也称为闰年。如1984年(鼠年)的农历中,有两个十月,通常称为十月和闰十月(即闰月)。农历闰年、闰月的推算:3年一闰,5年两闰,19年七闰;农历基本上19年为一周期对应于公历同一时间。如公历的2001年5月27日、1982年5月27日和1963年5月27日这个日子,都是闰四月初五。
超长农历年
最长的农历闰年的天数可达385天,这样的农历闰年是很罕见的。从公元前221年至公元1900年的2120年里,一共只有9次。从公元1900年至公元4000年这2100年里出现了22次,出现的年份有:
1925年、1944年、2006年、2270年、2289年、2351年、2606年、2625年、2634年、2889年、2951年、2970年、3234年、3253年、3296年、3315年、3589年、3608年、3872年、3915年、3934年、3953年。
公历1982年~2042年与农历闰年闰月对照表:
判定方法
公历闰年计算
(按一回归年365天5小时48分45.5秒)
1、非整百年份:能被4整除的是闰年。(如2004年就是闰年,2001年不是闰年)
2、整百年份:能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
3、对于数值很大的年份:如果这一年能被3200整除,那么这一年不是闰年,但如果这一年能被172800整除,则为闰年。如172800年是闰年,86400年不是闰年(因为虽然能被3200整除,但不能被172800整除)。(此按一回归年365天5h48'45.5''计算)
按一回归年365天5h48'45.5''计算:3200年多出16000小时153600分145600秒=18600小时26分40秒,现行公历中每400年有97个闰年,3200年共97*8=776个闰年=776*24小时=18624小时>18600小时,所以只能算到775个闰年,3200不是闰年,于是775*24=18600,多出了26分40秒(共计1600秒),怎么办?需要经历多少个3200年的周期,足够弥补1天(86400秒)?答案是刚好54个周期(86400=1600*54),历时172800(=3200*54)年。
公元前闰年计算
根据闰年算法,公元4年是闰年,且周期是4年,如果公元有0年,即为闰年。因为公元没有0年,那么公元前1年就是闰年。
128年31闰置闰法
这一规则曾在19世纪提出,但不知何种原因,没被两教派采纳。比起400年3不闰和900年7不闰的规则,128年31闰更精确、更简便。
按现行的闰年规则,从2052年到2096年间的闰年与回归年的误差都会超过一天以上,如采用128年31闰规则,就不会这么早出现这种情况。
128年31闰的置闰方案的优点和实施方法:
1、采用128年31闰的置闰的方法,可以大大减少历年与回归年的误差,回归年的长度是365.24219879天,128年31闰的平均年长是365.2421875天。历年与回归年的平均误差每年不到一秒,是历法与回归年平均误差的1/27。
2、改历后与现历法衔接好,不需要过渡阶段。其方法如下:现历法继续使用,到2048年停闰,以后每128年不闰。新历法规则是:每四年一闰,凡公元年数能被128整除的年不闰。
3、此历法非常科学,它的置闰方法比现历法更简单,更符合天体的运行规律,现历法平均每年与回归年误差26秒,而此历法每年与回归年平均误差不到一秒。经计算,如果回归年按如今的长度计算,得八万多年,新历法与回归年的误差才超过一天。而现历法与回归年的误差3300年就超过一天。此历法好记、简单,便于计算,凡公元年数能被128整除的年就不闰。
闰年的计算
2017年,经过研究,闰年的计算应该如下:
*************************************
一个回归年,H=(365*24*3600+5*3600+48*60+46)秒=31556926秒=15778463*2秒
1天 D=86400秒=43200*2秒
一个回归年=H/D天=15778463*2/(43200*2)天=365.2421990740740740740740740740....天
4年一闰:365*4+1=1461天=15778800/10800天
4个回归年为(15778463/43200)*4=15778463/10800天
4年一闰,公历比回归年时间多337/10800天
增加百年不闰、400年再闰的规则后:
400个公历年天数为365*400+97=146097天=15778476/108天
400个回归年为(15778463/43200)*400=15778463/108天
公历比回归年时间多13/108天
增加3200年不闰的规则后:
3200个公历年天数为365*3200+97*(3200/400)-1=1168775天=31556925/27天
3200个回归年为15778463*3200/43200=15778463*32/432=31556926/27天
公历比回归年时间少1/27天
增加86400年再闰的规则后:
86400个公历年天数为365*86400+(97*8-1)*(86400/3200)+1=365*86400+775*27+1=31556926=852037002/27天
86400个回归年为15778463*86400/43200=15778463*864/432=15778463*54/27=852037002/27天
公历比回归年时间少0天
结论:一天定义为24小时(86400秒),需要86400年一个循环才能消除公历和回归年的时间差。
*******************************
(365*24*3600+5*3600+48*60+46)=31556926秒(15778463*2)
1天=86400秒;(43200*2)
一个回归年等于15778463/43200天=365.2421990740740740740740740740....天
4年一闰:365*4+1=1461天=15778800/10800天
4个回归年为(15778463/43200)*4=15778463/10800天
4年一闰,公历比回归年时间多337/10800天
增加128年不闰的规则后:
128个公历年天数为365*128+128/4-1=46751天=31556925/675天
128个回归年为(15778463/43200)*128=15778463*2/675天=31556926/675天
公历比回归年时间少1/675天
增加86400年再闰的规则后:
86400个公历年天数为365*86400+31*675+1=31556926天
86400个回归年为15778463*86400/43200=15778463*2=31556926天
公历比回归年时间少0天
结论:一天定义为24小时(86400秒),需要86400年一个循环才能消除公历和回归年的时间差。
口诀:4年1闰,128年不闰,86400年再闰。
祖冲之与历法
在古代,中国历法家一向把十九年定为计算闰年的单位,称为“一章”。在每一章里有七个闰年。也就是说,在十九个年头中,要有七个年头是十三个月。这种闰法一直采用了一千多年,不过它还不够周密、精确。直到公元412年,北凉赵厞创作了《元始历》,才打破了岁章的限制,规定在六百年中间插入二百二十一个闰月。可惜的是,赵厞的改革并没有引起当时人的注意,在著名历法家何承天在公元443年制作《元嘉历》时,还是采用了十九年七闰的古法
祖冲之吸取了赵厞的先进理论,加上他自己的观察,认为十九年七闰的闰数过多,每二百年就要差一天,而赵厞六百年二百二十一闰的闰数却又嫌稍稀,也不十分精密。因此,他提出了三百九十一年内一百四十四闰的新闰法,这个闰法在当时算是最精密的了。
除了改革闰法以外,祖冲之在历法研究上的另一重大成就,是破天荒地应用了“岁差”。
祖冲之在历法研究方面的第三个巨大贡献,就是能够求出历法中通常称为“交点月”的日数。
祖冲之根据上述的研究成果,终于成功制成了当时最科学、最进步的历法——《大明历》。这是祖冲之科学研究的天才结晶,也是他在天文历法上的贡献。
闰年计算方法
精确计算方法
(按一回归年365天5小时48分45.5秒)
1.普通年份能被4整除,且不能被100整除的,是闰年。(如2004年就是闰年)
2.世纪年份能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
3.对于数值很大的年份,这年如果能被3200整除,并且还能被172800整除的才是闰年。如172800年是闰年,86400年不是闰年(因为虽然能整除3200,但不能整除172800)。(此按一回归年365天5h48'45.5''计算)
此外,如依照现有的太阳年的长度与上述闰年的规则,每8000年又约差一日,因此约翰·赫歇尔提议每逢4000的倍数不闰,如公元4000年。但距这一年来临尚有约二千年之遥,因此还未曾真正纳入规则或实施过。又由于地球公转速率的不稳定与众多影响的因素,届时是否需要纳入,此规则仍有疑问。
原因:若一年按365天5h48'46''(此时86400年也是闰年)计算,一年的天数必须是整数,不便将零头的时数计入,所以取365天为一年,则余5时48分46秒,积至4年约满一天。所以4年一“闰日”,谓之“闰年”,无“闰日”之年为平年,即平年365天,闰年366天。但到4年之时,仅有23时15分4秒闰一天,欠缺44分56秒;积至100年(25闰)时就欠缺18时43分20秒,约合3/4天,所以满100年不闰;此时又余5时16分40秒,积至400年,余21时6分40秒,又闰;又欠缺2时53分20秒,积至3200年共欠缺23时6分40秒,所以满3200年不闰;此时又余53分20秒,积至86400年,刚好24时,又一闰,这是不余不欠,需重计算,所以按阳历计算,就有上面的闰年规则。
按一回归年365天5h48'45.5''计算:3200年多出16000小时153600分145600秒=18600小时26分40秒,现行公历中每400年有97个闰年,3200年共97*8=776个闰年=776*24小时=18624小时>18600小时,所以只能算到775个闰年,3200不是闰年,于是775*24=18600,多出了26分40秒怎么办需要多少个周期弥补?答案是54个周期,为172800年,因为172800/3200=54个周期,54*26分40秒=1404分2160秒=24小时。
程序计算闰年
WPS表格
=OR(AND(MOD(YEAR(单元格),4)=0,MOD(YEAR(单元格),100)<>0),MOD(YEAR(单元格),400)=0)
假设某单元格输入公历年份,如输入“1582”表示1582年,输入“2000”表示2000年,输入负数表示“公元前(相反数)年”,如输入“-222”表示公元前222年。
可以用如下公式计算给定年份的天数:
=IF(单元格=1582,355,IF(单元格<0,IF(MOD(单元格,4)=3,366,365),IF(单元格<1582,IF(MOD(单元格,4)=0,366,365),365+IF(MOD(单元格,4)=0,1,0)-IF(MOD(单元格,400)=0,0,1)+IF(MOD(单元格,100)=0,0,1))))
知道了给定年份的天数,自然就知道是不是闰年了。
比如说在单元格A1输入年份,公式就变成:
=IF(A1=1582,355,IF(A1<0,IF(MOD(A1,4)=3,366,365),IF(A1<1582,IF(MOD(A1,4)=0,366,365),365+IF(MOD(A1,4)=0,1,0)-IF(MOD(A1,400)=0,0,1)+IF(MOD(A1,100)=0,0,1))))
现实中一般碰到的年份,自然是无交集地晚于1582年的年份,这时给定年份的天数可以用这个公式:
=365+IF(MOD(单元格,4)=0,1,0)-IF(MOD(单元格,400)=0,0,1)+IF(MOD(单元格,100)=0,0,1)
Ecmascript语言
C#语言
Java语言
VB语言
Python 语言
C++语言
scheme语言
MATLAB语言
Bash/Shell
Objective-C语言
参考资料
闰年.辞海网络版.
最新修订时间:2024-10-11 21:39
目录
概述
基本解释
出处
产生原因
参考资料