【第22期】观点:IT 行业加班,到底有没有价值?

闰年的计算

转载 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年。但距此一年份来临尚有约二千年之遥,因此还未曾真正纳入规则或实施过。又由于地球公转速率的不稳定与众多影响因素,届时是否需要纳入此规则仍有疑问。



举报

相关文章推荐

闰日闰年问题 大年份计算

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

TDD视频-闰年计算

活动感想 虽然接触TDD已有一段时间,但实践的并不多,所以理解也很浅。在此次活动中,很多同学是第一次接触TDD,也犯了普遍会犯的错误,比如先把所有测试代码全部写完才开始写实现代码,大粒度的测试和忘记重构等。网上也有很多关于TDD的争论,比如: TDD并不是看上去的那么美 <a href=&q...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

【JavaScript操作符优先级及闰年的计算】

【JavaScript操作符优先级及闰年的计算】 JavaScript操作符优先级 优先级:逻辑非 > 算术 > 关系 > 逻辑与、逻辑或 > 条件...

缩进语句CDays–5 习题一(计算今年是否为闰年)及相关内容解析。 缩进语句

废话就不多说了,开始。。。     盘算往年否是为闰年。     Solution:相信大家在习学C语言的时候就已对这个问题有过认识了,闰年条件:年份除以400为余数为0,或者除以4余数为零,且不能被100整除。Le...

闰年的计算方法及程序算法的实现

由于这个问题找的人还是非常多,所以今天我把它从我原来的blog上转过来,希望对大家有所帮助。这篇文章是我去年的时候写的,那时候还没用PHP,所以闰年的计算方法没有PHP的,今天在这里补充上这段代码,$...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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