当我有二月份的时候,如何让下面的代码工作?目前正在到达这一天,然后在到达 if 之前停止以确定是否是闰年。
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 +'/' + '';
}
}
最佳答案
使用Date objects更安全对于日期时间的东西,例如
isLeap = new Date(year, 1, 29).getMonth() == 1
由于人们不断询问它到底是如何工作的,这与 JS 如何根据年-月-日计算日期值有关(详细信息 here )。基本上,它首先计算该月的第一天,然后添加 N -1 天。因此,当我们要求非闰年的 2 月 29 日时,结果将是 2 月 1 日 + 28 天 = 3 月 1 日:
> new Date(2015, 1, 29)
< Sun Mar 01 2015 00:00:00 GMT+0100 (CET)
在闰年,2 月 1 日 + 28 = 2 月 29 日:
> new Date(2016, 1, 29)
< Mon Feb 29 2016 00:00:00 GMT+0100 (CET)
在上面的代码中,我将日期设置为 2 月 29 日,并查看是否发生了滚动。如果不是(月份仍然是 1,即二月),则这是闰年,否则为非闰年。
关于javascript 查找闰年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8175521/