Gravatar couramment utilisé Blog perso de Paul Da Silva

[Javascript] Connaitre le nombre de jours d’un mois

Posted on | mai 18, 2010 | 6 Comments

Quand on a l’habitude de coder en PHP et que l’on doit se mettre au javascript pour enrichir les interfaces on est vite limité par certaines fonctions pourtant si évidentes en PHP. Dernier exemple pour moi : récupérer le nombre de jours d’un mois donné de façon simple, sans calcul… En un mot un équivalent à la fonction suivante :

date(‘t’, $date);

J’ai eu beau chercher sur le net je n’ai pas réussi à mettre la main sur une fonction équivalente – l’objet Date de javascript ne prenant pas en charge cette fonctionnalité pourtant très utile. Et comme souvent dans ce cas je me suis mis à bidouiller jusqu’à trouver la solution. Celle-ci est tellement simple et efficace que j’ai décidé de vous la faire partager :

function getNbJours(date){
return new Date(date.getFullYear(), date.getMonth()+1, -1).getDate()+1;
}

Il s’agit donc de créer une nouvelle date temporaire dont l’année soit la même, le mois m+1 (n’oubliez pas que les mois sont les mois ordonnés dans l’ordre de 0 à 11) et le jour à -1. On récupère ensuite le jour de cette date auquel on ajoute 1 (oui je ne sais pas pourquoi il faut ajouter 1, mais de tous mes essais ça fonctionne sans soucis).

Petite note de service : je suis sur une mission qui me prend un peu plus de temps que la normale et je ne pourrais donc pas mettre à jour mon blog aussi souvent que d’habitude. Par ailleurs je ne peux pas tweeter, mais je vous laisse le soin de me suivre quand même : @Paul_Da_Silva – retour à une activité normale programmé le 31 mai… D’ici là comptez sur moi pour faire de mon mieux pour continuer à vous fournir un maximum de contenu intéressant 😉

Commentaires

6 Responses to “[Javascript] Connaitre le nombre de jours d’un mois”

  1. SCHTROUMPF
    mai 21st, 2010 @ 19 h 43 min

    Ben oui, quoi ! C’est évident !
    Mais je vais quand même essayer de comprendre 🙂
    Bye

  2. Bellerophon
    octobre 21st, 2011 @ 15 h 03 min

    On peut peut-être essayer de mettre 0 à la place de -1 pour éviter de rajouter +1 ensuite (je n’ai pas testé).

    Sinon j’ai créé cette fonction pour mes besoins persos:

    function getNbJoursMois(mois, annee) {
    var lgMois = new Array[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    if ((annee%4 == 0 && annee%100 != 0) || annee%400 == 0) lgMois[1] += 1;
    return lgMois[mois]; // 0 < mois <11
    }

    Avec calcul de l'année bissextile.

  3. Gaten
    novembre 17th, 2011 @ 11 h 36 min

    La solution proposé dans cet article tient compte des années bissextiles puisqu’elle se base du la gestion du calendrier du navigateur du client.

  4. iragui
    février 11th, 2013 @ 18 h 01 min

    Très bien, juste il faut enlever +1 du mois:

    new Date(date.getFullYear(), date.getMonth(), -1).getDate()+1;

  5. Le Lezard
    août 5th, 2013 @ 15 h 26 min

    Pour faire + simple (testé !):
    function getNbJours(date){
    return new Date(date.getFullYear(), date.getMonth()+1, 0).getDate();
    }

  6. Pirato
    juin 19th, 2015 @ 17 h 35 min

    Bravo à Bellerophon !
    Il faut toujours prévoir les années bissextiles 😉

    J’ai corrigé son script (histoire qu’un copier/coller marche …)

    function getNbJoursMois(mois, annee) {
    var lgMois = [’31’, ’28’, ’31’, ’30’, ’31’, ’30’, ’31’, ’31’, ’30’, ’31’, ’30’, ’31’];
    if ((annee%4 == 0 && annee%100 != 0) || annee%400 == 0) {
    lgMois[1] = ’29’;
    }
    return lgMois[mois]; // 0 < mois <11
    }

Leave a Reply





Edito

Ancien journaliste, ancien entrepreneur, ancien (ir)responsable Pirate, actuel citoyen qui s'intéresse à la politique et à son évolution.

Read moar !.

Retrouvez moi sur :

Suivez moi sur twitter sur facebook sur wikipedia Ajouter ce blog a votre lecteur RSS

Bitcoin

bitcoin logo
1GZnMQ9wXyifxCnDEqg8CSGdngWcKWptHv

Piratons la démocratie

piratons la democratie

One more thing !

0100 0011 0110 1000 0110 0001 0110 1110 0110 0111 0110 0101 0111 0010 0010 0000 0110 1100 0110 0101 0010 0000 0110 1101 0110 1111 0110 1110 0110 0100 0110 0101 0010 0000 0110 0101 0110 1110 0010 0000 0111 0011 0010 0111 0110 0001 0110 1101 0111 0101 0111 0011 0110 0001 0110 1110 0111 0100 0010 0000 0010 1101 0010 0000 0110 1111 0110 1110 0010 0000 0111 0110 0110 0001 0010 0000 0110 0010 0110 1111 0110 1001 0111 0010 0110 0101 0010 0000 0111 0101 0110 1110 0010 0000 0110 0011 0110 1111 0111 0101 0111 0000 0010 0000 0011 1111

Tm9uIGNlbGVsIGzgIGVzdCBqdXN0ZSBwb3VyIHRlIGZhaXJlIHBlcmRyZSA1bW4gOyk=

Relationship Closeness Inventory

Promo code Genesis Mining

Sha 256 cloud mining

Best Bitcoin debit card

Zcash Mining