javascript寻找闰年 [英] javascript to find leap year

查看:165
本文介绍了javascript寻找闰年的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我有一个月的二月时,如何获得下面的代码?目前正在到达这一天,然后停下来,才能确定是否是一个闰年。

How can I get the code below to work when I have a month of february? Currently it is getting to the day and then stopping before getting to the if to determine whether it is a leap year.

 if (month == 2) {
    if (day == 29) {
        if (year % 4 != 0 || year % 100 == 0 && year % 400 != 0) {
            field.focus();
             field.value = month +'/' +  '';
        }
    }
    else if (day > 28) {
        field.focus();
             field.value = month +'/' +  '';
    }
}


推荐答案

使用日期对象更安全的日期时间内容,例如

It's safer to use Date objects for datetime stuff, e.g.

isLeap = new Date(year, 1, 29).getMonth() == 1

由于人们不断询问这是如何工作的,它与JS如何计算年月日的日期值(详情这里)。基本上,它首先计算一个月的第一个月,然后添加N -1天。所以当我们在非闰年要求2月29日,结果将是2月1日+ 28日= 3月1日:

Since people keep asking about how exactly this works, it has to do with how JS calculates the date value from year-month-day (details here). Basically, it first calculates the first of the month and then adds N -1 days to it. So when we're asking for the 29th Feb on a non-leap year, the result will be the 1st Feb + 28 days = 1st March:

> new Date(2015, 1, 29)
< Sun Mar 01 2015 00:00:00 GMT+0100 (CET)

在闰年, 1 + 28 = 2月29日:

On a leap year, the 1st + 28 = 29th Feb:

> new Date(2016, 1, 29)
< Mon Feb 29 2016 00:00:00 GMT+0100 (CET)

在上面的代码中将日期设置为2月29日,并查看是否发生翻滚。如果没有(月份还是1,即2月),这是一个闰年,否则是一个非飞跃的一个。

In the code above, I set the date to 29th Feb and look if a roll-over took place. If not (the month is still 1, i.e. February), this is a leap year, otherwise a non-leap one.

这篇关于javascript寻找闰年的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆