闰年的计算

转载 2013年12月02日 15:06:19

作为一个程序员,有时会碰到闰年的判断,那么到底神马是闰年呢,又为什么会有闰年这种说法呢。下面资料摘至WIKI:

一、闰年的定义

闰年是比普通年份多出一段时间的年份,在各种历法中都有出现,目的是为了弥补人为规定的纪年与地球公转产生的差异。

二、闰年的起因

若以阳历为例,“年”的计算基础是回归年,而一个回归年大约等于365.24220日。因为在平年西历只计算365日,结果四年后便会累积0.24220×4=0.9688日,大约等于一日,所以便逢四年增加一日闰日以抵销这0.9688日。 然而,累积4年后多的0.96876天,与真正的1日尚差0.03124天,故如果不间断地按照4年1闰的方式修正,百年后将累积成365×100+25=36525日,比真正的1世纪日数365.24219×100=36524.219多。因此历法学家便重新规定闰年的规则为:西元年份逢4的倍数闰、100的倍数不闰、400的倍数闰、4000的倍数不闰。例如:公元1992、1996年等为4的倍数,故为闰年;公元1800、1900、2100年为100的倍数,当年不闰;公元1600、2000、2400年为400的倍数,有闰;而公元4000、8000年为4000的倍数,则不闰。

三、闰年规则

目前使用的格里历闰年规则如下:
1.西元年份除以400可整除,为闰年。
2.西元年份除以4可整除并且除以100不可整除,为闰年。
3.西元年份除以4不可整除,为平年。
4.西元年份除以100可整除并且除以400不可整除,为平年
算法:

if (西元年份是400的倍数)闰年

else if (西元年份是4的倍&& 西元年份不是100的倍数) 闰年

else 平年


每逢闰年,2月份有29日,平年的2月份为28日。
因此,2057年为平年,2060年逢4的倍数为闰年,1900年逢100的倍数但非400的倍数故为平年,2000年逢400的倍数又为闰年。
此外,如依照现有太阳年的长度与上述闰年规则,每8000年又约差一日,因此约翰·赫歇尔提议每逢4000的倍数不闰,如公元4000年。但距此一年份来临尚有约二千年之遥,因此还未曾真正纳入规则或实施过。又由于地球公转速率的不稳定与众多影响因素,届时是否需要纳入此规则仍有疑问。



微机原理闰年计算

  • 2011年10月22日 10:09
  • 94KB
  • 下载

闰年的计算

  • 2014年06月17日 21:06
  • 526B
  • 下载

第三周作业-实现随机点名的签到程序和计算闰年的简单程序

1.计算闰年:判断某一年份是否为闰年。(如果这个年份能被4整除,但不能被100整除;或者,如果这个年份能被4整除,又能被400整除;满足以上两个条件中的一个的年份为闰年)。类名:LeapYear pu...

使用Java编写的闰年计算

  • 2009年03月03日 21:51
  • 685B
  • 下载

请分别输入年月日三个数值,计算出这是这一年的第几天?(提示:要考虑闰年和2月的情况)

 /* 3.请分别输入年月日三个数值,计算出这是这一年的第几天? (提示:要考虑闰年和2月的情况) */ #include void main() {  int year,mon...

两个日期之间闰年数计算方法探索

近来需要计算两个日期之间的差值,想使用直接计算的方法来计算两个日期之间的差值,今天偶然发现了一个规律,于是记录下来,以共享,欢迎拥有更加好的算法朋友批评指正。...

计算日子差。自由年月日。含闰年判断

计算日子差 自由年月日 闰年判断含

闰日闰年问题 大年份计算

1414 - February 29 PDF (English) Statistics Forum Time Limit: 1 second...

请分别输入年月日三个数值,计算出这是这一年的第几天? (提示:要考虑闰年和2月的情况)

请分别输入年月日三个数值,计算出这是这一年的第几天? (提示:要考虑闰年和2月的情况)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:闰年的计算
举报原因:
原因补充:

(最多只允许输入30个字)