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 entre deux dates


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 85
    Par défaut Comparaison entre deux dates
    Bonjour,

    j'ai un petit soucis de comparaison entres deux dates au niveaux du javascript (date de naissance par rapport à la date du jour ).
    Voici le code html du champ date_naissance :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <label for="date">Date de naissance :</label>
    			<input type="text" id='date_naissance' name="date_naissance" class="mCalendar"
    			onblur="verifDate(this)"/>
    			<span id="erreurdate"></span></br>
    			<script type="text/javascript" src="mCalandar.js"></script>
    qui récupérer un champ date du type dd/mm/yyyy.

    voici le code de la fonction js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function verifDate(champ)
    {
    	var date = new Date();
    	var date_n = document.getElementById('date_naissance').value;
    	var date2 = new Date(date_n);
    	if(date2 < date){
    		document.getElementById('erreurdate').innerHTML = 'OK';
    		return true;
    	}else{
    	  document.getElementById('erreurdate').innerHTML = 'Pas OK';
          return false;
    	}
    }

    Merci de vos réponses,
    Cordialement,

  2. #2
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Billets dans le blog
    55
    Par défaut
    Tu n'as pas de problème.
    Simplement, un champ date est au format mm/dd/yyyy et non dd/mm/yyyy
    Développeur Java
    Site Web

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 85
    Par défaut
    Merci de ta réponse. J'ai trouvé quelque chose afin d'avoir les mêmes format :
    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
     
    function verifDate(champ)
    {
    	var date = new Date();
    	var day = date.getDate();
    	var month = (date.getMonth()+1);
    	var year = date.getFullYear();
     
    	var date2 = (day+"/"+month+"/"+year);
    	alert(champ.value);
    	alert(date2);
    	if(champ.value < date2){
    		document.getElementById('erreurdate').innerHTML = 'OK';
    		return true;
    	}else{
    	  document.getElementById('erreurdate').innerHTML = 'Pas OK';
          return false;
    	}
    }
    Quand je fais les alert, je vois bien qu'elle sont au même format mais quand je fais des tests, il me dit que 6/11/2015 est > à 15/11/2015 ..

    Cdtl,

  4. #4
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    la comparaison de chaine de caractère se fait successivement caractère par caractère
    donc lors que tu compare "6/11/2015" à "15/11/2015"
    tu commence par le premier caractère
    6 > 1 donc la chaine est supérieure "6/11/2015" > "15/11/2015"

    au lieu de comparer des date tu compare des chaine ça n'a pas de sens.

    pour comparer des date il te faut des dates
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var date = new Date();//maintenant
     
    // pour le champs il est au format dd/mm/yyyy alors que le constructeur de date attends mm/dd/yyyy
    // on parse la string du champ pour récupérer chaque partie
    var res = champ.value.match(/([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})/);
    //on construit la date
    var date2 = new Date(res[1]+"/"+res[0]+"/"+res[2]);
    if (date < date2) {
      ...
    }
    mais attention l'objet de type date n'est pas une date mais un instant il comporte donc des heure minutes et seconde
    donc si tu utilise telle quelle la méthode ci dessus lorsque tu saisie la date du jour
    tu aura comme résultat que date est supérieure à date2 car date est à une heure postérieure à 0:00:00

    A+JYT

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 85
    Par défaut
    J'ai encore un petit soucis =) voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function verifDate(champ)
    {
    	var date = new Date();
    	var res = champ.value.match(/([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})/);
    	var date2 = new Date(res[1]+"/"+res[0]+"/"+res[2]);
    	if(date < date2){
    		document.getElementById('erreurdate').innerHTML = ' Pas OK';
    		return false;
    	}else{
    	  document.getElementById('erreurdate').innerHTML = 'OK';
          return true;
    	}
    }
    il rentre toujours dans le else mais jamais dans le if. J'ai aussi changé le type de mon champ date dans le formulaire pour le passer de date à text.

    Cdtl,

  6. #6
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    sorry j'ai oublié que la regexp matchait aussi la date entière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var res = champ.value.match(/([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})/);
    	var date2 = new Date(res[2]+"/"+res[1]+"/"+res[3]);
    	if(date < date2){
    la valeur de res est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ["16/11/2015", "16", "11", "2015"]
    A+JYT

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/10/2008, 11h46
  2. erreur comparaison entre deux date
    Par offspring dans le forum JDBC
    Réponses: 7
    Dernier message: 06/06/2008, 09h23
  3. Réponses: 4
    Dernier message: 29/01/2008, 16h01
  4. Comparaison entre deux dates
    Par sylvaindenisbe dans le forum VBA Access
    Réponses: 28
    Dernier message: 14/05/2007, 16h31
  5. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 11h16

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