如题所述
连续四年中不一定有一个闰年。公历年份是4的倍数的,一般是闰年。(如2004年就是闰年)。
凡阳历中有闰日(二月为二十九日)的年;闰余(岁余置闰。阴历每年与回归年相比所差的时日)。
注意闰年(公历中名词)和闰月(农历中名词)并没有直接的关联,公历中只分闰年和平年,平年有365天,而闰年有366天(2月中多一天);平年中也可能有闰月(如2017年是平年,农历有闰月,闰6月)。
扩展资料
由于地球的自转速度逐渐降低,而公转速度则相对更加稳定,所以上述的系统经过更长的周期也会发生微小的误差。据计算,每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日这个日子,都是闰四月初五。
参考资料来源:百度百科-闰年
一般公历年份数是4的倍数就是闰年,否则是平年;
但公历年份是整百数年数的必须是400的倍数才是闰年,不是400的倍数即为平年。
比如,从1900到1903年这连续四年中,就没有闰年。
1900年,是整百所,必须是400的整数倍数,才是闰年。而1900年不是400的整数倍数,所以1900年不是闰年。本回答被提问者和网友采纳
最根本的原因是:地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year)。公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为每四年累计一天,故第四年于2月末加1天,使当年的历年长度为366日,这一年就为闰年。现行公历中每400年有97个闰年。按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约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年和1900年为平年,2000年为闰年。此后,平均每年长度为365.2425天,约4年出现1天的偏差。按照每四年一个闰年计算,平均每年就要多算出0.0078天,经过四百年就会多出大约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年会有一天的误差,所以英国的天文学家John Herschel提议公元4000为平年,以后类推12000年,20000年亦为平年。但此提议从未被正式采纳。原因是到了4000年,地球自转的精确速度并非如今可以预测,所以届时参照真实数据方可做出判断。因此,在长远的将来,针对闰年的微小调整应该不是由预定的系统决定,而是随时不定性的。
农历闰年
中国旧历农历作为阴阳历的一种,每月的天数依照月亏而定,一年的时间以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日 闰二月小 壬戊年
判定方法编辑
公历闰年计算
(按一回归年365天5小时48分45.5秒)
①、非整百年能被4整除的为闰年。(如2004年就是闰年,2010年不是闰年)
地球公转示意图
②、整百年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
③、对于数值很大的年份,这年如果能被3200整除,并且能被172800整除则是闰年。如172800年是闰年,86400年不是闰年(因为虽然能被3200整除,但不能被172800整除)(此按一回归年365天5h48'45.5''计算)。
按一回归年365天5h48'45.5''计算:3200年多出16000小时153600分145600秒 =18600小时26分40秒,共32*24+8=136个闰年=776*24=18624小时 >18600小时,所以只能算到775个闰年,3200不是闰年,于是775*24=18600,多出了26分40秒怎么办需要多少个周期弥补?答案是54个周期,为172800年,因为172800/3200=54个周期 54*26分40秒=1404分2160秒=24小时。
【公元前闰年计算】
1,非整百年:年数除以4余数为1是闰年,即公元前1、5、9……年;
2,整百年:年数除以400余数为1是闰年,年数除以3200余数为1,不是闰年,年数除以172800余1又为闰年,即公元前401、801……年。
【128年31闰置闰法】
这一规则曾在19世纪提出,但不知何故没被两教派采纳。比起400年3不闰和900年7不闰的规则,128年31闰更精确更简便。
按现行的闰年规则,从2052年到2096年间的闰年与回归年的误差都会超过一天以上,如采用128年31闰规则不会这么早出现这种情况。
128年31闰的置闰方案的优点和实施方法:
1,采用128年31闰的置闰的方法,可以大大地减少历年与回归年的误差,回归年长度是365.24219879日,128年31闰的平均年长是365.2421875日。历年与回归年的平均误差每年不到一秒,是历法与回归年平均误差的27分之一。
2.改历后与现历法衔接好,不须要过渡阶段。其方法如下:现历法继续使用,到2048年停闰,以后每加128年既不闰。新历法规则是:每四年一闰,凡公元年数能被128整除的年不闰。
3. 此历法非常科学,它的置闰方法比现历法更简单,更符合天体运行规律,现历法平均每年与回归年误差26秒,而此历法每年与回归年平均误差不到一秒。经计算,如果回归年按如今长度计算,得八万多年,新历法与回归年的误差才能超过一日。而现历法与回归年的误差3300年即超过一日。此历法好记简单,便于历算,凡公元年数能被128整除的年不闰。
祖冲之的贡献编辑
在古代,我国历法家一向把十九年定为计算闰年的单位,称为“一章”,在每一章里有七个闰年。也就是说,在十九个年头中,要有七个年头是十三个月。这种闰法一直采用了一千多年,不过它还不够周密、精确。公元412年,北凉赵厞创作《元始历》,才打破了岁章的限制,规定在六百年中间插入二百
祖冲之改革历法
二十一个闰月。可惜赵厞的改革没有引起当时人的注意,例如著名历算家何承天在公元443年制作《元嘉历》时,还是采用十九年七闰的古法。
祖冲之吸取了赵厞的先进理论,加上他自己的观察,认为十九年七闰的闰数过多,每二百年就要差一天,而赵厞六百年二百二十一闰的闰数却又嫌稍稀,也不十分精密。因此,他提出了三百九十一年内一百四十四闰的新闰法,这个闰法在当时算是最精密的了。
除了改革闰法以外,祖冲之在历法研究上的另一重大成就,是破天荒第一次应用了“岁差”。
”祖冲之在历法研究方面的第三个巨大贡献,就是能够求出历法中通常称为“交点月”的日数。
祖冲之根据上述的研究成果,终于成功制成了当时最科学、最进步的历法——《大明历》。这是祖冲之科学研究的天才结晶,也是他在天文历法上最卓越的贡献。[2]
计算方法编辑
精确计算方法
(按一回归年365天5小时48分45.5秒)
①、普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1901年不是闰年)
②、世纪年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
③、对于数值很大的年份,这年如果能整除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秒,共32*24+8=136个闰年=776*24=18624小时 >18600小时,所以只能算到775个闰年,3200不是闰年,于是775*24=18600,多出了26分40秒怎么办需要多少个周期弥补?答案是54个周期,为172800年,因为172800/3200=54个周期 54*26分40秒=1404分2160秒=24小时。
程序计算
C#语言:
1
2
3
4
5
6
7
8
9
/// <summary>
/// 判断指定年份是否为闰年
/// </summary>
/// <param name="year">年份</param>
/// <returns>返回布尔值true为闰年,反之不是</returns>
public static bool isLeapYear(int year)
{
return ((year % 4 == 0 && year % 100 != 0) ||year%400==0);
}
Java语言:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class LeapYear{
public static boolean isLeapYear(Integer year){
if((year%4==0 && year%100!=0) || year%400==0){
return true;
}
else
return false;
}
public static void main(String[]args){
Integer i = new Integer(400);
boolean res = isLeapYear(i);
System.out.println(res);
}
}
VB语言:
1
2
3
Public Function isLeapYear(year As Integer) As Boolean
isLeapYear = (year Mod 4 = 0 And year Mod 100 <> 0) Or year Mod 400 = 0
End Function
Python 语言:
1
2
3
4
5
6
# -*- coding: cp936 -*-
YEAR = input("输入年份:")
if (YEAR % 4 == 0 and YEAR % 100 != 0) or YEAR % 400 == 0:
print "闰年"
else:
print "非闰年"
C语言:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
int main(void)
{
int y;
printf("请输入年份,回车结束\n");
scanf("%d",&y);
if((y%4==0&&y%100!=0)||y%400==0)
printf("%d是闰年\n",y);
else
printf("%d是平年\n",y);
return 0;
}
MATLAB语言
function lpflag = isleapyear(year)
% 判断是否为闰年
% Input -year 年份,数值
% Output -lpflag lpflag = 1,闰年;lpflag = 0,平年
lpflag = (~mod(year, 4) && mod(year, 100)) || ~mod(year, 400);