2013-05-03 91 views
42
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,所以使用的是什么我已经有了,怎么我可以根据这些条件检查条目是否为闰年(注意,在执行伪代码时,我可能做错了,如果我有,请纠正我) 编辑:请注意,这需要使用整数而不是日期函数检查今年是JavaScript的闰年

+1

检查@ http://stackoverflow.com/questions/8175521/javascript-to-find-leap-year – swetha 2013-05-03 06:51:55

+1

的事情是我需要解决这个问题,就好像我只用了一年的工作说2014作为一个整数不是日期值 – BigBob 2013-05-03 06:56:36

回答

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

很高兴我能帮上忙。你可以使用'((year%4 == 0)&&(year%100!= 0))|| (year%400 == 0)'如果你不需要函数,你需要它。我发现函数对于具有良好的人类可读代码很有帮助。 – MMeersseman 2013-05-03 07:04:01

+0

我已经按照指示做了,但感谢您的建议。我很想使用更多的功能,但是我不允许添加任何额外的功能。公平地限制和做一些其他计算烦人,但管理。 – BigBob 2013-05-03 07:06:23

+1

仅供参考:这似乎比'isLeap'(下图)更高效 - http://jsfiddle.net/atwright147/7dqzvzpr/ – atwright147 2015-07-10 14:39:57

-7

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

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

这将返回true或false。

+6

它不处理特殊情况(由100和400整除)。 – Pif 2013-11-20 13:41:50

0

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

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

你能详细说一下吗? – tsnorri 2015-03-30 17:46:34

+2

这似乎只是对接受答案的重构。这不是更紧凑或执行任何不同的操作,所以我不知道它会增加什么价值。 – 2015-03-30 17:55:01

+5

这是相当多骚扰三元运算符 – 2016-02-10 01:39:58

3

如果你在一个应用程序的Node.js这样做,你可以使用leap-year包:

npm install --save leap-year 

然后从你的应用程序,使用下面的代码来验证所提供的年份或日期的对象是否是闰年:

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

leapYear(2014); 
//=> false 

leapYear(2016); 
//=> true 

使用这样的库有一个好处,就是你不必处理所有特殊情况的肮脏细节,因为图书馆负责处理这些情况。

-5

我的代码是很容易理解的

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

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

您的代码是不正确的。 1900年不是闰年,但你的代码会说这是。 – duskwuff 2016-08-22 01:38:00

10

功能检查,如果二月有29天。如果是这样,那么我们有一个闰年。

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

我其实很喜欢这个解决方案,因为它不需要任何公历的基础知识。 – 2017-11-04 00:37:08

2

一个更快的解决方案是由凯文P.水稻这里提供:https://stackoverflow.com/a/11595914/5535820 所以这里的代码:

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

这更简洁:'!(y&3 || y&15 &&!(y%25))' – 2017-08-11 15:57:53

0

您可以使用isLeapyearType函数来确定当年的类型。

var date = require('aleppo') 
// ... 
date.yearType(2000) // leap 
date.isLeap(2000) // true