美文网首页
JavaScript 根据年份判断是闰年还是平年

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

作者: O无为学长O | 来源:发表于2021-04-20 13:20 被阅读0次

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

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

    1. 根据年份规则来判断

    闰年的计算规则:

    • 普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
    • 世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。

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

    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以上)的日期,计算规则都有所不同,但这个在目前的实际程序中应该不太会用上,所以就不作讨论啦。

    相关文章

      网友评论

          本文标题:JavaScript 根据年份判断是闰年还是平年

          本文链接:https://www.haomeiwen.com/subject/kgoalltx.html