web-dev-qa-db-ja.com

javascriptで年がうるう年かどうかを確認する

 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 なので、すでに持っているものを使用して、エントリがこれらの条件に基づいたうるう年(擬似コードの実装時に間違ったことがあるかもしれませんが、もしあれば修正してください)編集:これは日付関数ではなく整数を使用する必要があることに注意してください

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

この関数は、2月が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
31
Eugene Sunic

Kevin P. Riceにより、より高速なソリューションが提供されています: https://stackoverflow.com/a/11595914/5535820 したがって、次のコードです

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

Node.jsアプリでこれを行う場合は、 leap-year パッケージを使用できます。

npm install --save leap-year

次に、アプリから次のコードを使用して、提供された年または日付オブジェクトがうるう年かどうかを確認します。

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

leapYear(2014);
//=> false 

leapYear(2016);
//=> true 

このようなライブラリを使用することには、ライブラリが面倒を見てくれるので、すべての特殊なケースを正しく行うという汚い詳細に対処する必要がないという利点があります。

3
nwinkler

次のコードを使用して、it年かどうかを確認できます。

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