web-dev-qa-db-fra.com

Vérifiez si l'année est une année bissextile en 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
 }

C’est ce que j’ai eu jusqu’à présent (l’entrée est stockée dans "isYear"), j’ai essentiellement suivi ceci ici , donc, en utilisant ce que j’ai déjà, comment puis-je vérifier si l’entrée est une année bissextile en fonction de ces conditions (remarque: je me suis peut-être mal comporté lors de la mise en œuvre du pseudocode, corrigez-moi si j'ai). Edit: notez que ceci nécessite d'utiliser un entier, pas une date.

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

La fonction vérifie si février a 29 jours. Si c'est le cas, nous avons une année bissextile.

ES5

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

ES6

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

Résultat

isLeap(1004) // true
isLeap(1001) // false
31
Eugene Sunic

Kevin P. Rice fournit une solution plus rapide ici: https://stackoverflow.com/a/11595914/553582 Alors, voici le code:

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

Si vous faites cela dans une application Node.js, vous pouvez utiliser le package bissextile :

npm install --save leap-year

Ensuite, depuis votre application, utilisez le code suivant pour vérifier si l'objet année ou date fourni est une année bissextile:

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

leapYear(2014);
//=> false 

leapYear(2016);
//=> true 

Utiliser une bibliothèque comme celle-ci présente l’avantage de ne pas avoir à traiter avec les détails néfastes de la résolution correcte de tous les cas spéciaux, car la bibliothèque s’occupe de cela.

3
nwinkler

Vous pouvez utiliser le code suivant pour vérifier s'il s'agit d'une année bissextile:

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