JavaScript 根据年份判断是闰年还是平年

2021-04-20  本文已影响0人  O无为学长O

说明:注意是闰年平年的判断,不是闰月!闰年平年是公历中的历法规则,闰月是农历历法中的规则,两者之间是没有任何关联的,不管是闰年平年,都有可能会出现闰月。

要判断指定年份是闰年还是平年,有两种思路,不同思路,适用的语言不同,虽然标题中说的是 JavaScript ,但不同语言的编程思路很多都是相通的。

1. 根据年份规则来判断

闰年的计算规则:

知道了规则,计算起来就很简单了

var year = 2020; // 指定年份
var isLeap = year %400 == 0 || year %100 != 0 && year %4 == 0; // 根据年份判断是否为闰年
var day = isLeap ? 29 : 28; // 计算2月份的天数
var str = isLeap  ? '闰年' : '平年';
console.log( year  + '年2月的天数是' + day + '天,本年为' + str);

2. 根据Date()对象的参数规则来判断

Date() 对象传参时,是会自动纠错的,比如 new Date(2021,1,29) , 参数的意思是将日期设置为 2021年2月29日,但2021年是平年,2月份只有28天,所以最终的日期会被纠正为 2021年3月1日。而如果将年份设置为2020年,即 new Date(2020,1,29),最终日期就是 2020年2月29日,因为2020年是闰年,2月是有29日的。
知道了这个自动纠错的规则,就可以利用它来主动犯错,通过结果来反推年份是否为闰年。

var year = 2020; //要判断的年份
var date = new Date(y, 1, 29); // 参数的年份由y决定,后面两个则是固定值
var isLeap = date.getMonth() == 1; //  true 为闰年,false 为平年
var day = isLeap ? 29 : 28; // 计算2月份的天数
var str = isLeap  ? '闰年' : '平年';
console.log( year  + '年2月的天数是' + day + '天,本年为' + str);

上面代码只适用于 JavaScript 中,但思路是相通的。


Ps: 1582年以前或年份很大(超过3200以上)的日期,计算规则都有所不同,但这个在目前的实际程序中应该不太会用上,所以就不作讨论啦。

上一篇 下一篇

猜你喜欢

热点阅读