闰年的计算
来源:互联网 发布:trie树 java实现 中文 编辑:程序博客网 时间:2024/04/27 20:02
作为一个程序员,有时会碰到闰年的判断,那么到底神马是闰年呢,又为什么会有闰年这种说法呢。下面资料摘至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年。但距此一年份来临尚有约二千年之遥,因此还未曾真正纳入规则或实施过。又由于地球公转速率的不稳定与众多影响因素,届时是否需要纳入此规则仍有疑问。
- 闰年的计算
- 闰年的计算
- 闰年的计算
- 闰年的计算问题
- 闰年的计算
- c++计算闰年的程序
- 闰年计算
- 闰年计算
- 闰年计算
- 计算[1900, year]之间的闰年数
- 0012闰年计算的C++实现
- 计算21世纪的闰年个数
- 杭电1076-闰年的计算
- HDOJ 1076 An Easy Task 计算第N个闰年(闰年的计算)
- Javascript 计算闰年
- 用shell计算闰年
- 计算闰年代码
- 计算闰年平年
- linux下tomcat服务的相关命令
- 学习笔记1
- SQL Tuning Advisor(SQL调优顾问,STA)
- ORA-00600: internal error code, arguments: [4194] 问题处理
- java常用集合类
- 闰年的计算
- UVA 11045 My T-shirt suits me(网络流)
- 利用VBA在excel中批量添加备注
- Linux 配置 SVN自动发送邮件
- 集成Spring、Elasticsearch、paoding,将ES服务嵌入到Web程序
- 通过GDI打印
- MFC 自定义消息
- 中央就决定将建设自主知识产权的搜索引擎
- Clearsilver应用文档