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

Contributions JavaScript / AJAX Discussion :

Comment comparer deux dates ? [Fait]


Sujet :

Contributions JavaScript / AJAX

  1. #1
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut Comment comparer deux dates ?
    http://javascript.developpez.com/faq...dates.comparer

    • Les variables ne sont pas déclarées avec le mot-clef var
    • Le code n'est pas indenté au niveau des if
    • Il manque des points-virgules à la fin de certaines instructions
    • J'ai ajouté un commentaire pour préciser la syntaxe de la fonction setFullYear()


    Voici ma proposition de correction :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    // Mise en place de la première date
    var d1 = new Date(0);
    d1.setFullYear(2006, 11, 27); // Syntaxe : année en 4 chiffres, mois, jour
     
    // Mise en place de la seconde date
    var 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");
    Attention, les mois vont de 0 (janvier) à 11 (décembre).

  2. #2
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    Nous pourrions simplifier le code en n'utilisent pas la fonction setFullYear et définir la date directement avec le constructeur Date().

    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
    var d1 = new Date(0);
    var d1 = new Date(2006,11,27);
     
    // Mise en place de la seconde date
    var d2 = new Date(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");
    Ce qui nous permettrai de pousser un peu plus la précision du moment que le souhaite comparer :
    Citation Envoyé par W3SCHOOLS
    var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
    Mais nous sommes peut être hors sujet ?
    L'utilisation de la fonction setFullYear permet une mise jour de la date, peut être est ce pour cela qu'il est utilisé dans cette Q/R ?

  3. #3
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par lanonyme Voir le message
    Nous pourrions simplifier le code en n'utilisent pas la fonction setFullYear et définir la date directement avec le constructeur Date().
    Tu n'as pas tort

    Citation Envoyé par lanonyme Voir le message
    Mais nous sommes peut être hors sujet ?
    Je ne crois pas puisqu'il s'agit de mettre à jour la FAQ. Mais attendons d'avoir d'autres avis

  4. #4
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Puisque c'est la FAQ, autant proposer les deux méthodes

    D'ailleurs, setFullYear ou setUTCFullYear ? ^^

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Oui, entièrement d'accord avec lanonyme, l'utilisation de setFullYear() n'est pas opportune dans ce cas pour les raisons évoquées.

    D'ailleurs, setFullYear ou setUTCFullYear ? ^^
    Je comprends pas trop l'utilité... ça changerait quoi au niveau de la comparaison ?

    Puisque c'est la FAQ, autant proposer les deux méthodes
    Hum... pas trop d'accord en fait.
    L'exemple initial, même s'il est correct syntaxiquement, ne l'est pas forcément au niveau de la logique et est susceptible d'entrainer plus d'incompréhensions et de mauvaises interprétations que d'en lever.
    Comme dit par lanonyme, le but de setFullYear() est de mettre à jour un objet Date, le but de new Date() de créer un objet Date et dans l'exemple, nous avons uniquement besoin de créer des objets.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Comme dit par lanonyme, le but de setFullYear() est de mettre à jour un objet Date, le but de new Date() de créer un objet Date et dans l'exemple, nous avons uniquement besoin de créer des objets.
    On garde donc la solution proposée par lanonyme

  7. #7
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Parfait.

    Par contre, rien (ni personne) n'empêche Romain de faire une Q/R pour comparer setFullYear et setUTCFullYear.

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Comment comparer deux dates ?
    Que ce soit avec setFullYear() ou avec setUTCFullYear(), la différence sera nécessairement la même, je comprends pas l'intérêt...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Je parlais ici de comparer ces deux méthodes, pas de comparer des dates avec ces deux méthodes.

  10. #10
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Oui, désolé, ma remarque était intempestive pour la question posée, mais la distinction pourrait être faite dans une autre question, j'imagine que pas mal de développeurs se sont déjà gratté la tête devant la coexistence des deux séries de méthodes (UTC et non UTC).

    Pas que ça soit crucial, mais c'était juste une remarque hein ^^'

  11. #11
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    Oui, désolé, ma remarque était intempestive pour la question posée
    absolument pas on est là pour discuter de la mise à jour de la FAQ donc les commentaires sont bienvenus. Après on peut discuter de la pertinence des remarques proposées

  12. #12
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    proposition définitive de correction

    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
     
    // Mise en place de la première date
    var d1 = new Date(2006,11,27);
     
    // Mise en place de la seconde date
    var d2 = new Date(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");
    }
    Nous pouvons poussez un peu plus la précision des dates à comparer en ajoutant l'heure en plus de la date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
    Pour en savoir plus sur les arguments de l'objet Date()
    utilisation du code proposé par lanonyme
    ajout d'accolades ouvrantes et fermantes dans les if pour prendre en compte la remarque de Bovino
    ajout d'un lien vers la documentation de l'objet date
    mise ne forme du code javascript dans le texte
    suppression de l'initialisation Date(0)

    Si vous n'avez plus de commentaire à formuler, je tague le sujet

  13. #13
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    A minima on peut supprimer la première initialisation de d1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Mise en place de la première date
    //var d1 = new Date(0);
    var d1 = new Date(2006,11,27);

  14. #14
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    A minima on peut supprimer la première initialisation de d1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Mise en place de la première date
    //var d1 = new Date(0);
    var d1 = new Date(2006,11,27);
    fait, corrigé

  15. #15
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    rhaaaaaaaaaa la coquille

    Nous pouvons poussez un peu plus la précision des dates à comparer en ajoutant l'heure en plus de la date :

  16. #16
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Pas de souci pour l'orthographe, il y aura une relecture.

  17. #17
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Comme il n'y a aucune remarque postée depuis plus d'un mois je pense que l'on peut mettre à jour cette Q/R dans la FAQ.

  18. #18
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Merci,

    Je ferai les ajouts bloc par bloc.

  19. #19
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut


    Voici ce que ça va donner. Je n'ai pas encore mis le fichier exemple donc c'est normal que le lien plante.

    C'est ok ?

  20. #20
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par vermine Voir le message


    Voici ce que ça va donner. Je n'ai pas encore mis le fichier exemple donc c'est normal que le lien plante.

    C'est ok ?
    ok
    Par contre le second lien va vers le site w3schools.com. Est-ce un site du W3C ? ou concurrent à dvp car il y a des tutos JS ?

Discussions similaires

  1. comment comparer deux dates
    Par smix13 dans le forum IHM
    Réponses: 1
    Dernier message: 26/01/2009, 14h37
  2. comment comparer deux date
    Par Melvine dans le forum Langage
    Réponses: 3
    Dernier message: 25/04/2007, 17h38
  3. Comment comparer deux date en SQL Server avec VB.NET
    Par Pedro Varela dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/09/2006, 15h26
  4. Comment comparer deux dates
    Par vodevil dans le forum Modules
    Réponses: 6
    Dernier message: 01/09/2005, 18h24
  5. comment comparer deux dates?
    Par billoum dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/08/2004, 21h08

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