129 votes

Quel est le meilleur moyen de déterminer le nombre de jours d'un mois avec javascript?

J'utilise cette fonction, mais j'aimerais savoir quel est le moyen le plus efficace et le plus précis de l'obtenir.

 function daysInMonth(iMonth, iYear) {
   return 32 - new Date(iYear, iMonth, 32).getDate();
}
 

237voto

FlySwat Points 61945
 function daysInMonth(month,year) 
{
   return new Date(year, month, 0).getDate();
}
 

Le jour 0 est le dernier jour du mois précédent. Comme le constructeur du mois est basé sur 0, cela fonctionne bien. Un peu de bidouille, mais c’est essentiellement ce que vous faites en soustrayant 32.

7voto

dolmen Points 2196

Si vous appelez souvent cette fonction, il peut être utile de mettre la valeur en cache pour de meilleures performances.

Voici la version en cache de la réponse de FlySwat :

 var daysInMonth = (function() {
    var cache = {};
    return function(month, year) {
        var entry = year + '-' + month;

        if (cache[entry]) return cache[entry];

        return cache[entry] = new Date(year, month, 0).getDate();
    }
})();
 

1voto

Tony Li Points 26
function numberOfDays(iMonth, iYear) {
         var myDate = new Date(iYear, iMonth + 1, 1);  //find the fist day of next month
         var newDate = new Date(myDate - 1);  //find the last day
            return newDate.getDate();         //return # of days in this month
        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X