java中的闰年算法问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 15:34:53
各类教材中给的都是这样的算法:

符合条件二者之一为闰年:一、能被4整除,而不能被100整除;二、能被4整除而能被100整除;

既然为闰年的条件是能被4整除,为何要分成这两类呢? 请教请教!
并不局限java,也在其他的语言中。
1900年不是闰年吗?如果4年一闰1900年明明就是啊!

1582年以前 只要被4整除就是闰年

之后 1582年 10月4日的 下一天就是 10月15日
日历上没有 这10天(1582年10月5日~1582年10月14日)

1582年之后 可以被4整除,不被100整除 可以被400整除的是闰年

1900年不是闰年 (被100整除,不被400整除)

你是问java还是问闰年的问题呢?

你这明明是在问闰年的问题嘛。你问的闰年的条件为什么是这样。

由于地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年,公历把一年定为365天。这样每年就少算了0.24219天,所以余下的时间约为四年累计一天,加在二月里,但是这样还是不够精确,因为多算了1-0.24219*4=0.03124天,
接下来,我们看看,在400年里,如果有100个闰年的话,就多算了3.124天,这样的话,白天黑夜就对不上了,所以,400年我们只给它97个闰年,这样400年也就多算了大概0.124天(因为这只是大概值),这样就精确一些了。

概括一下,400年的时间,如果按365天一年的话,就少了400*0.24219=96.876天,所以加上97个闰年,97个怎么分呢?这样就有了现在的分法,4年一闰,100年的400年一闰。

你明白了吗?

我说这么清楚,如果你不明白,那就是XX了,既然你知道闰年的条件,还写不出代码,那就更是XX了。

你的条件错了
闰年条件是::一、能被4整除,而不能被100整除;
二、能被400整除;
符合一个就是闰年。如2000是闰年,而1900不是闰年

仔细看看,1900以上两个条件都不符合
通俗的说,就是四年一闰,百年不闰,四百年再闰。
http://baike.baidu.com/view/29649.htm