在javascript中检查年份是否为闰年

时间:2013-05-03 06:49:25

标签: javascript date conditional-statements date-arithmetic

 function leapYear(year){
    var result; 
    year = parseInt(document.getElementById("isYear").value);
    if (years/400){
      result = true
    }
    else if(years/100){
      result = false
    }
    else if(years/4){
      result= true
    }
    else{
      result= false
    }
    return result
 }

这是我到目前为止(条目是存储在“isYear”中),我基本上遵循这个here,所以使用我已有的,我如何检查条目是否是基于这些条件的闰年(注意我在实现伪代码时可能做错了,如果有的话请纠正我) 编辑:注意这需要使用整数而不是日期函数

7 个答案:

答案 0 :(得分:139)

function leapYear(year)
{
  return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
}

答案 1 :(得分:29)

该功能检查二月是否有29天。如果确实如此,那么我们就有一个闰年。

ES5

function isLeap(year) {
  return new Date(year, 1, 29).getDate() === 29;
}

ES6

let isLeap = (year) => new Date(year, 1, 29).getDate() === 29;

结果

isLeap(1004) // true
isLeap(1001) // false

答案 2 :(得分:4)

Kevin P. Rice提供了一个更快的解决方案:https://stackoverflow.com/a/11595914/5535820 所以这是代码:

function leapYear(year)
{
    return (year & 3) == 0 && ((year % 25) != 0 || (year & 15) == 0);
}

答案 3 :(得分:3)

如果您在Node.js应用中执行此操作,则可以使用leap-year包:

npm install --save leap-year

然后,从您的应用中,使用以下代码验证提供的年份或日期对象是否为闰年:

var leapYear = require('leap-year');

leapYear(2014);
//=> false 

leapYear(2016);
//=> true 

使用像这样的库有一个优点,就是你不需要处理所有特殊情况的肮脏细节,因为库会处理这个问题。

答案 4 :(得分:0)

您可以使用以下代码检查它是否为闰年:

ily = function(yr) {
    return (yr % 400) ? ((yr % 100) ? ((yr % 4) ? false : true) : false) : true;
}

答案 5 :(得分:-9)

我的代码很容易理解

var year = 2015;
var LeapYear = year % 4;

if (LeapYear==0) {
    alert("This is Leap Year");
} else {
    alert("This is not leap year");
}

答案 6 :(得分:-10)

您可以尝试使用JavaScript的日期对象

new Date(year,month).getFullYear()%4==0

这将返回true或false。