IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

R�cup�rer toutes les dates des mardis de 2014


Sujet :

JavaScript

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Par d�faut R�cup�rer toutes les dates des mardis de 2014
    Bonjour tout le monde,

    J'ai un calendrier en Jquery qui propose des dates de formations pour l'ann�e 2014. Seules les dates possibles sont cliquables. J'ai donc cr�er un tableau avec les dates valides en questions (tous les mardis).
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    var enabledDays = ["1-7-2014","1-14-2014","1-21-2014","1-28-2014"]; etc...
    J'aimerais savoir comment r�cup�rer toutes les dates des mardis de l'ann�e 2014 pour g�n�rer mon tableau dynamiquement ?

    Si vous avez des id�es, merci d'avance

  2. #2
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Bonjour,
    tu r�cup�res le 1st mardi de l'ann�e puis � l'objet date qui correspond tu ajoutes 7 jusqu'� ce que tu changes d'ann�e.

  3. #3
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function getDaysInYear(year,day){
    	var d=new Date(year,0), dates=[];
    	d.setDate(d.getDate()+(7+day-d.getDay())%7);
    	while(d.getFullYear()===year){
    		dates.push(new Date(d));
    		d.setDate(d.getDate()+7);
    	}
    	return dates;	
    }
     
    console.log( getDaysInYear(2014,2) );
    ou avec la super librairie Moment.js

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    function getDaysInYear(year,day){
    	var d=moment([year]).day(7+day), dates=[];
    	while(d.year()===year){
    		dates.push(new Date(+d));
    		d.add(1,'week');
    	}
    	return dates;
    }
    n'h�site pas � poser des questions si tu ne comprends pas une partie du code

  4. #4
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par d�faut
    137
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    function getDaysInYear(y,d,t,r){
    for((t=new Date(y,r=[])).setDate(t.getDate()+(7+d-t.getDay())%7);t.getFullYear()==y;t.setDate(t.getDate()+7))r.push(new Date(t));return r
    }
    console.log( getDaysInYear(2014,2) );

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Par d�faut
    Bonjour,

    Merci � SylvainPV et Kaamo pour vos r�ponses

    Oui Sylvain j'ai juste une ligne que je comprends pas trop c'est celle-ci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    d.setDate(d.getDate()+(7+day-d.getDay())%7);
    Je veux bien une explication, merci

  6. #6
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par d�faut
    Cela permet de placer la date sur le premier mardi suivant. En JavaScript, chaque jour de la semaine est attribu� � un num�ro. (dimanche = 0, lundi = 1, etc, samedi = 6). Listons tous les cas possibles. Si aujourd'hui est un :
    dimanche : 2 (mardi) - 0 (dimanche) = dans 2 jours
    lundi : 2 (mardi) - 1 (lundi) = dans 1 jour
    mardi : 2 - 2 = dans 0 jour, on est bien plac�
    mercredi : 2 - 3 = -1 (c'est donc dans 7 jours - 1 jour soit 6)
    jeudi : 2 - 4 = -2 (c'est donc dans 7 jours - 2 jours soit 5)
    vendredi : 2 - 5 = -3 (c'est donc dans 7 jours - 3 jours soit 4)
    samedi : 2 - 6 = -4 (c'est donc dans 7 jours - 4 jours soit 3)
    On voit donc qu'il faut ajouter 7 jours, � la diff�rence de jour entre mardi et le jour courant.
    dimanche : 7 + 2 (mardi) - 0 = dans 9 jours (!!)
    lundi : 7 + 2 - 1 = dans 8 jours (!!)
    mardi : 7 + 2 - 2 = dans 7 jours (!!)
    mercredi : 7 + 2 - 3 = dans 6 jours
    jeudi : 7 + 2 - 4 = dans 5 jours
    vendredi : 7 + 2 - 5 = dans 4 jours
    samedi : 7 + 2 - 6 = dans 3 jours
    Il reste � traiter les cas d�passant 7, il faut donc faire appel � l'op�rateur modulo (%) qui donne le reste de la division par 7
    dimanche : (7 + 2 (mardi) - 0) % 7 = 9 % 7 = 2
    lundi : (7 + 2 - 1) % 7 = 8 % 7 = 1
    mardi : (7 + 2 - 2) % 7 = 7 % 7 = 0
    mercredi : (7 + 2 - 3) % 7 = 6 % 7 = 6
    jeudi : (7 + 2 - 4) % 7 = 5 % 7 = 5
    vendredi : (7 + 2 - 5) % 7 = 4 % 7 = 4
    samedi : (7 + 2 - 6) % 7 = 3 % 7 = 3
    On a donc le nombre de jours s�parant aujourd'hui du mardi suivant. Il suffit d'ajouter la date du jour d.getDate() � ce r�sultat pour obtenir la date du mardi suivant.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    d.setDate(      // placer la date au mardi suivant
      d.getDate()   // retourne le jour courant du mois : 1 en l'occurrence (pour mercredi 1er janvier 2014)
                    // On lui ajoute la différence de jour entre le jour courant et le mardi suivant
        + (7          // nombre de jours dans une semaine (semaine suivante)
        +day          // numéro du jour de la semaine à trouver (2 pour mardi)
        -d.getDay()   // numéro du jour de la semaine courant (3 en l'occurence pour mercredi 1er janvier 2014)
        )%7           // renvoie le reste de la division par 7 si le mardi suivant n'est pas la semaine prochaine. (ex, si le résultat est 9, renvoie 2. Si le résultat est 8, renvoie 1, etc ...)
    );

  7. #7
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    Pas grand chose � ajouter � l'explication tr�s d�taill�e de Kaamo La technique du suite[ (index % longueur + longueur) % longueur] est un moyen relativement simple de s'assurer qu'un index se trouve bien dans une certaine partie d'une suite qui se r�p�te. On doit ajouter la longueur car l'op�rateur modulo consid�re les restes n�gatifs valables. Un autre exemple avec les mois:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var MOIS = ["JANVIER","FEVRIER","MARS","AVRIL","MAI","JUIN","JUILLET","AOUT","SEPTEMBRE","OCTOBRE","NOVEMBRE","DECEMBRE"];
     
    function prochainMois(moisActuel, nombreDeMoisPlusTard){
    	var indexMoisActuel = MOIS.indexOf(moisActuel);
    	return MOIS[ (indexMoisActuel + 12 + nombreDeMoisPlusTard%12) % 12 ];
    }
     
    prochainMois("FEVRIER",3); //MAI
    prochainMois("NOVEMBRE",4); //MARS
    prochainMois("JUILLET",-13); //JUIN
    @Kaamo: vu que les codes en un tweet semblent te manquer, n'h�site pas � relancer le topic

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Par d�faut
    Merci � vous deux, les explications sont effectivements d�taill�es et donc parfaites !

    Et c'est int�ressant pour d'autres sujets

    Merci encore � vous !

  9. #9
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Je me doutais en �crivant la m�thode qu'il y avait du tweet dans l'air et cela n'a pas manqu�

    Et encore merci Kaamo pour cette belle d�monstration/explication

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [MySQL] R�cup�rer tout les noms des images apr�s qu'il et �tait renomm�
    Par ssTutuxX dans le forum PHP & Base de donn�es
    R�ponses: 2
    Dernier message: 28/08/2014, 13h07
  2. [XL-2007] Trouver toutes les dates des semaines de l'ann�e
    Par apt dans le forum Macros et VBA Excel
    R�ponses: 6
    Dernier message: 20/06/2012, 21h12
  3. R�ponses: 3
    Dernier message: 07/09/2010, 20h57
  4. R�cup�rer toutes les pages des sous-sites
    Par Knightmare dans le forum SharePoint
    R�ponses: 5
    Dernier message: 17/02/2009, 08h44
  5. [VBA] r�cup�rer tout les noms des propri�t�s d'un objet
    Par ooyeah dans le forum G�n�ral VBA
    R�ponses: 6
    Dernier message: 05/03/2007, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo