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 :

Problème de comparaison de dates


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut Problème de comparaison de dates
    Bonjour à tous,
    J'utilise une fonction qui me permet de comparer deux dates. Car en fait je ne veux pas que la première date saisie soit supérieur à la seconde. Voici ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function Compare_Dates(valeur_date1, valeur_date2)
    {var tabDate1 = valeur_date1.split('/');
     var datTest_Date1 = new Date(parseInt(tabDate1[2]), parseInt(tabDate1[1])-1, parseInt(tabDate1[0]));
     var tabDate2 = valeur_date2.split('/');
     var datTest_Date2 = new Date(parseInt(tabDate2[2]), parseInt(tabDate2[1])-1, parseInt(tabDate2[0]));
     
     if (datTest_Date1 < datTest_Date2) return 1;
     if (datTest_Date1 == datTest_Date2) return 0;
     if (datTest_Date1 > datTest_Date2) return -1;
    }
    Et voici l'endroit où je l'appel dans ma page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form name='form' action='insert_modif_projet.php' method='POST'
    onsubmit='return (Verif_Date(document.form.debut.value) 
    && Verif_Date(document.form.fin.value) 
    && verif_champ(document.form.code_projet.value) 
    && verif_champ(document.form.designation.value) 
    && verif_champ(document.form.abrege.value)) 
    && if (Compare_Dates(document.form.debut.value, document.form.fin.value)=='-1') alert('La date de début est supérieur à la date de fin');'>
    Malheureusement, même si la première date est supérieur à la seconde, le message d'alert n'apparaît pas. Pourriez-vous m'aider s'il vous plaîr ? Merci
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 93
    Points : 111
    Points
    111
    Par défaut
    essaie plutot de mettre tes dates au format aaaammjj comme ca il te suffit de comparer deux numériques c'est beaucoup plus simple!
    La guerre 14-18 avait fait un civil de tué pour dix militaires. 39-45 : un civil pour un militaire. Engagez-vous! Pour la prochaine, seuls les militaires seront survivants.

  3. #3
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut
    Essaie plutôt :
    if (datTest_Date1.getTime() < datTest_Date2.getTime()) return 1;

  4. #4
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    J'ai suivi ton conseil et j'ai mis ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function Compare_Dates(valeur_date1, valeur_date2)
    {var tabDate1 = valeur_date1.split('/');
     var datTest_Date1 = new Date(parseInt(tabDate1[2]), parseInt(tabDate1[1])-1, parseInt(tabDate1[0]));
     var tabDate2 = valeur_date2.split('/');
     var datTest_Date2 = new Date(parseInt(tabDate2[2]), parseInt(tabDate2[1])-1, parseInt(tabDate2[0]));
     
     if (datTest_Date1.getTime() < datTest_Date2.getTime()) return 1;
     if (datTest_Date1.getTime() == datTest_Date2.getTime()) return 0;
     if (datTest_Date1.getTime() > datTest_Date2.getTime()) return -1;
    }
    Et ca ne change rien à mon probleme.
    Sinon comment je fais pour passer des dates au format numérique ?
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  5. #5
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut
    Justement avec la méthode getTime(), tu récupère la date en millisecondes (durée en millisecondes entre la date souhaitée et le 1er janvier 1970)
    Donc bien une valeur numérique ...
    Lorsque tu fais un alert de tes dates et de tes getTime(), tu trouves bien ce que tu attends ?

  6. #6
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    En fait je viens de m'apercevoir que ma fonction n'est pas executé, comment cela ce fait-il ?
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  7. #7
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut
    Ben écoute, ça c'est plutôt un problème d'appel de fonctions et là avec l'extrait de code que tu as donné, ça risque d'etre plutot difficile de repérer le problème...

  8. #8
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    C'est bon problème résolu. En fait voici comment était appelé la fonction dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onsubmit='return if (Compare_Dates(document.form.debut.value, document.form.fin.value)=='-1') alert('La date de début est supérieur à la date de fin');'>
    Evidemment cela ne marchait pas j'ai donc modifié mon appel de fonction ainsi que ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onsubmit='return Compare_Dates(document.form.debut.value, document.form.fin.value);'>
    Et voila ma fonction modifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function Compare_Dates(valeur_date1, valeur_date2)
    {
     var tabDate1 = valeur_date1.split('/');
     var datTest_Date1 = new Date(parseInt(tabDate1[2]), parseInt(tabDate1[1])-1, parseInt(tabDate1[0]));
     var tabDate2 = valeur_date2.split('/');
     var datTest_Date2 = new Date(parseInt(tabDate2[2]), parseInt(tabDate2[1])-1, parseInt(tabDate2[0]));
     
     if (datTest_Date1 > datTest_Date2 )
     { alert ("La date de début est plus récente que la date de fin")
       return false
     }
    }
    Avec ça, y'a aucun souci, merci pour votre aide à tous les deux
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

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

Discussions similaires

  1. Problème de comparaison de date
    Par trigone dans le forum Langage
    Réponses: 3
    Dernier message: 25/06/2008, 08h44
  2. Problème de comparaison de dates
    Par Siguillaume dans le forum Langage
    Réponses: 6
    Dernier message: 19/06/2008, 14h22
  3. problème de comparaison de date (si de différentes années)
    Par jamesleouf dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 23/05/2008, 11h20
  4. Problème sur comparaison de date
    Par Nixar dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/12/2007, 09h19
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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