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 :

Comparer 2 Dates de type chaine


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut Comparer 2 Dates de type chaine
    Bonjour,

    Voilà mon problème,

    J'ai un formulaire où l'utilisateur va rentrer 2 dates : date de début et date de fin. Je voudrai vérifier que la date de début est bien "Inferieur" à la date de fin.

    Vous allez me dire "Fastoche"... Le HIC c'est que (exigence du boss) les dates sont de type char...

    J'ai une fonction "verif()" qui s'occupe déja de verifier si on est au bon format et je voudrais rajouter la vérification ci-avant.
    Cette fonction est appellée dans le "onSubmit" de mon formulaire du style :
    "onSubmit=return verif();"

    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
     
    function verif() {
    if (isDate(document.form.dateDebut.value)== false || isDate(document.form.dateFin.value)== false) {
    	alert('Veuillez respecter svp le format jj/mm/aaaa ! !');
    			return false;
    }
    }
     
    function isDate(date) {
    	// Cette fonction permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa
    	// Par Romuald
     
    	if (date == "") // si la variable est vide on retourne faux
    		return false;
     
    	exp = new RegExp("^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$");
     
    	if (!exp.test(date)) // On teste l'expression régulière pour valider la forme de la date
    		return false; // Si pas bon, retourne faux
    }
    Merki de m'aider !!!

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    aucun problème pour convertir tes char en date le temps du test.

    Voir la FAQ ...

    A+

  3. #3
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Bonjour,
    aucun problème pour convertir tes char en date le temps du test.

    Voir la FAQ ...

    A+
    D'accord pour comparer 2 dates mais on me dit pas comment convertir les chaines en date...

    J'ai dû oublié de préciser... je commence le javascript juste juste....

    Mici

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Sekigawa Voir le message
    D'accord pour comparer 2 dates mais on me dit pas comment convertir les chaines en date...
    On trouve quand même facilement où :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d1.setFullYear(2006, 11, 27)
    Tu peux récupérer les jours, mois et année dans un array en utilisant ton séparateur actuel ('/')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tabDate1 = ta_date1_en_char.split('/');
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d1.setFullYear(tabDate[2], tabDate[1], tabDate[0])
    A+

  5. #5
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut
    Tu gère trop !!!

    Je vais tester de suite je te tiens au courant !!

    Merci Beaucoup !! Jte Kiff

  6. #6
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut
    ça marche pas...

    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
     
    function comparDate(dateDebut, dateFin) {
    	// Cette fonction va comparer deux date
     
    	var tabDateDebut = dateDebut.split('/');
    		d1.setFullYear(tabDateDebut[2], tabDateDebut[1], tabDateDebut[0])
    	var tabDateFin = dateFin.split('/');
    		d2.setFullYear(tabDateFin[2], tabDateFin[1], tabDateFin[0])
     
    	if(d1>d2)
    		return false;
    }
     
    function verif() {
    if (isDate(document.form.dateDebut.value)== false || isDate(document.form.dateFin.value)== false) {
    	alert('Veuillez respecter svp le format jj/mm/aaaa ! !');
    			return false;
    }
     
    if(comparDate(document.form.dateDebut.value, document.form.dateFin.value) == false) {
    	alert('Votre date de début doit être OBLIGATOIREMENT inférieur à la date de fin');
    			return false;
    }
     
    }

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Qu'est-ce qui ne marche pas ?
    Tu as une fonction isDate() ?

    Sinon, utilise plutôt la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms['form'].elements['dateDebut'].value
    Et "form" est un mauvais choix pour nommer ... un <form>

    Evite d'utiliser comme identifiant les termes réservés du langage ...

    A+

  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
    Hum... d1 et d2, ils sont déclarés où ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function comparDate(dateDebut, dateFin) {
    	// Cette fonction va comparer deux date
     
    	var tabDateDebut = dateDebut.split('/');
    		d1.setFullYear(tabDateDebut[2], tabDateDebut[1], tabDateDebut[0])
    	var tabDateFin = dateFin.split('/');
    		d2.setFullYear(tabDateFin[2], tabDateFin[1], tabDateFin[0])
     
    	if(d1>d2)
    		return false;
    }
    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
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut
    ça marche enfin !!! Merci beaucoup Bovino !!!!

    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
     
    function comparDate(dateDebut, dateFin) {
    	// Cette fonction va comparer deux date
     
    	var d1 = new Date(0);
    	var d2 = new Date(0);
     
    	var tabDateDebut = dateDebut.split('/');
    		d1.setFullYear(tabDateDebut[2], tabDateDebut[1], tabDateDebut[0])
    	var tabDateFin = dateFin.split('/');
    		d2.setFullYear(tabDateFin[2], tabDateFin[1], tabDateFin[0])
     
    	if(d1>d2)
    		return false;
    }
    Tchou et encore merci à tous !!!

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Comparer deux dates de type String
    Par newmar dans le forum Struts 1
    Réponses: 2
    Dernier message: 07/05/2008, 21h43
  2. comment comparer un champ de type date ?
    Par savoir dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/04/2008, 10h48
  3. comment comparer deux dates?
    Par billoum dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/08/2004, 21h08
  4. Comment récuperer une date depuis une chaine?
    Par shopoto dans le forum ASP
    Réponses: 4
    Dernier message: 12/05/2004, 16h17
  5. Convertir une date en type string
    Par ziboux dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 29/10/2003, 10h52

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