2013-05-03 87 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