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 :

Comparaison dates (getTime)


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut Comparaison dates (getTime)
    Bonjour,

    Je tente de comparer 2 dates au format jj/mm/aaaa. Je ne comprend pas pourquoi 10/09/2009 donne une valeur en millisecondes plus grande que 03/10/2009, et quel est la différence en getTime et Date.parse qui me donne la même valeur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <html>
    <head>
    <script language="javascript" type="text/javascript">
    function compare() 
    {
    var var1 = document.getElementById("date_exceptio").value;
    var var2 = document.getElementById("date_jour").value;
    //Pour tests
    document.write('var1 : ',var1, '<br />');
    document.write('var2 : ',var2, '<br />');
     
    d1 = new Date(var1);
    d2 = new Date(var2);
     
    //Pour tests
    document.write('d1 : ',d1.getTime(), '<br />');
    document.write('d2 : ',d2.getTime(), '<br />');
     
    if(d1 < d2) { alert('la date saisie doit être supérieur au '+var2)} else { alert('la date saisie est supérieur au '+var2)}
    	}
    </script>
    </head>
    	</body>
     
    		<table>
    			<tr>
    			<th align="left">Choisissez une date :</th>
    			<td><input type="text" size="10" id="date_exceptio" value="" ></td>
    			</tr>
    		</table>
    			<input type="submit" name="valider" value="Valider" onclick="compare()"/>
    			<input type="hidden" name="date_jour" id="date_jour" value="<?php echo date("d/m/Y"); ?>">
    	</body>
    </html>

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Février 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Février 2008
    Messages : 77
    Points : 111
    Points
    111
    Par défaut
    Bonjour,

    Tu n'es pas au format jj/mm/aaaa mais au format mm/jj/aaa

  3. #3
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    A quel endroit ?

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Février 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Février 2008
    Messages : 77
    Points : 111
    Points
    111
    Par défaut
    Ajoute ca après ta comparaison
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alert(d1.getMonth()+'et'+d2.getMonth());
    d1 et d2 sont au format mm/jj/aaaa

  5. #5
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Ton alert donne 10 et 21 avec d1 = 10/09/2009 et D2 en date du jour. D'ou sort le 21 ?

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Février 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Février 2008
    Messages : 77
    Points : 111
    Points
    111
    Par défaut
    Non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alert(d1.getMonth()+'et'+d2.getMonth());
    Me donne bien 9 et 2 et comme getMonth renvoie 0 pour janvier, c'est OK

  7. #7
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Merci pour le +1

    Ca ne répond pas à mon problème, d'ou sort le 2 pour mars ?
    Ma date du jour est le 03/10/2009

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Février 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Février 2008
    Messages : 77
    Points : 111
    Points
    111
    Par défaut
    La valeur retournée par getMonth commence à 0 pour janvier, 1 pour fevrier, 2 pour mars.

    Si tu veux tu peux essayer comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    document.write('d1 : ',d1.getTime(), '<br />');
    document.write('d1 : ',d1.getMonth()+1, '<br />');
    document.write('d2 : ',d2.getTime(), '<br />');
    document.write('d2 : ',d2.getMonth()+1, '<br />');
    Tu verras, ca affiche bien 10 pour le 10/09/2009 et 3 pour le 03/10/2009

  9. #9
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Je m'y prend bien pour comparer 2 dates ?

  10. #10
    Inactif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 117
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par arthuro45 Voir le message
    Je m'y prend bien pour comparer 2 dates ?
    Ben déjà les dates que tu récupères doivent être au formate MM/JJ/AAAA
    ensuite tu dois impérativement prenndre en compte que 03 c'est pas mars mais Avril par exemple.

    Donc déjà ton inversion des mois et jours montre que c'est normal que 10/09 soit supérieux à 03/10 car la première date correspond au 9 novembre et ta deuxième date correspond au 10 avril

  11. #11
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Ok, mais alors concrétement que faire de ma date quand je saisi au format JJ/MM/AAAA ? Je la laisse tel quelle ?

  12. #12
    Membre régulier

    Profil pro
    Inscrit en
    Février 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Février 2008
    Messages : 77
    Points : 111
    Points
    111
    Par défaut
    Je peux te proposer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <html>
    <head>
    <script language="javascript" type="text/javascript">
    function compare() 
    {
    var var1 = document.getElementById("date_exceptio").value;
    var var2 = document.getElementById("date_jour").value;
    var regex = new RegExp("[/-]");
    var date1 = var1.split(regex);
    var date2 = var2.split(regex);
    
    //Pour tests
    document.write('var1 : ',var1, '<br />');
    document.write('var2 : ',var2, '<br />');
     
    d1 = new Date(0);
    d2 = new Date(0);
    d1.setFullYear(date1[2]);
    d1.setMonth(date1[1]);
    d1.setDate(date1[0]);
    d2.setFullYear(date2[2]);
    d2.setMonth(date2[1]);
    d2.setDate(date2[0]);
     
    //Pour tests
    document.write('d1 : ',d1.getTime(), '<br />');
    document.write('d2 : ',d2.getTime(), '<br />');
     
    if(d1 < d2) { alert('la date saisie doit être supérieur au '+var2)} else { alert('la date saisie est supérieur au '+var2)}
    }
    </script>
    </head>
    	</body>
     
    		<table>
    			<tr>
    			<th align="left">Choisissez une date :</th>
    			<td><input type="text" size="10" id="date_exceptio" value="" ></td>
    			</tr>
    		</table>
    			<input type="submit" name="valider" value="Valider" onclick="compare()"/>
    			<input type="hidden" name="date_jour" id="date_jour" value="03/10/2009">
    	</body>
    </html>

  13. #13
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Merci pour ton aide, ça fonctionne.

    Dans la faq JS il y a ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Mise en place de la première date
    d1 = new Date(0);
    d1.setFullYear(2006, 11, 27)
     
    // Mise en place de la seconde date
    d2 = new Date(0);
    d2.setFullYear(2006, 0, 18)
     
    if(d1 > d2)
    alert("d1 est après d2");
    else if(d1 < d2)
    alert("d1 est avant d2");
    else
    alert("d1 et d2 sont la même date");
    http://javascript.developpez.com/faq...dates.comparer
    Comment font-ils pour faire si court ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] comparaison date varchar
    Par Greggggggg dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 18/09/2006, 17h33
  2. [VB.NET] Comparaison date
    Par Pleymo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/08/2006, 22h25
  3. [Dates] Comparaison date
    Par BenoitDenis dans le forum Langage
    Réponses: 16
    Dernier message: 29/03/2006, 13h50
  4. [VBA-E] Comparaison date / datetime
    Par dahu29 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/03/2006, 13h12
  5. [Dates] problème Comparaison dates
    Par gwen-al dans le forum Langage
    Réponses: 4
    Dernier message: 06/01/2006, 11h24

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