本文主要是介绍闰年的判断,86400年是不是闰年,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//根据百度百科:公历闰年
//1、非整百年:能被4整除的为闰年。(如2004年就是闰年,2100年不是闰年)
//2、整百年:能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
//3、对于数值很大的年份:这年如果能被3200整除,并且能被172800整除则是闰年。如172800年是闰年,86400年不是闰年(因为虽然能被3200整除,但不能被172800整除)
为什么想到这个问题呢?
public void testName5() {
System.out.println(LocalDate.of(100, 1, 1).isLeapYear()); //false
System.out.println(LocalDate.of(-400, 1, 1).isLeapYear()); //true
System.out.println(LocalDate.of(400, 1, 1).isLeapYear()); //true
System.out.println(LocalDate.of(2004, 1, 1).isLeapYear());//true
System.out.println(LocalDate.of(2017, 1, 1).isLeapYear());//false
System.out.println(LocalDate.of(172800, 1, 1).isLeapYear());//true
System.out.println(LocalDate.of(86400, 1, 1).isLeapYear());//true 不符合规则3
}
看java8的闰年源码:
//java8源码: return ((prolepticYear & 3) == 0) && ((prolepticYear % 100) != 0 || (prolepticYear % 400) == 0);
意思是:(能被4整除 ) 且 ( 不能被100整除或者能被400整除的就是闰年)
这跟跟我们 平常的理解 (能被4整除且不能被100整除) 或者 ( 能被400整除)是等价的
但是没有考虑第三种情况, 毕竟离当前有点远
这篇关于闰年的判断,86400年是不是闰年的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!