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 :

Controle de date erroné


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 115
    Points
    115
    Par défaut Controle de date erroné
    Bonjour,
    J'ai une fonction de controle de date qui ne fonctionne pas correctement,
    pour le '29/12/2007' elle me repond true, mais pour le '30/12/2007' elle me répond false, j'y comprend plus rien...


    voici le code qui bug :
    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
     
    function controleDate(elemDate) {
    	var erreurDate = false;
    	if(elemDate.value!="jj/mm/aaaa") {
    		//Découpage de la chaine contenant la date
    		var reg = new RegExp("[/]+", "g");
    		var tbDate = elemDate.value.split(reg);
    		if(tbDate.length==3) {
    			//- Vérification que la date est correcte
    			if(isNaN(tbDate[0]) || isNaN(tbDate[1]) || isNaN(tbDate[2]) || trim(tbDate[0])=="" || trim(tbDate[1])=="" || trim(tbDate[2])=="") {
    				erreurDate = true;
    			}else{
    				jour = parseInt(tbDate[0]);
    				mois = parseInt(tbDate[1]);
    				annee = parseInt(tbDate[2]);
    				//Controle du mois
    				if(mois>=1 && mois<=12) {
    					//Nombre de jours du mois
    					nbJoursMois = getNbJoursMois(mois,annee);
    					//Controle sur le jour
    					if(jour>=1 && jour<=nbJoursMois) {
    						//Si la date est correcte on la met au bon format
    						var dtDate = new Date();
    						dtDate.setDate(jour);
    						dtDate.setMonth(mois-1);
    						dtDate.setYear(annee);
    						elemDate.value = dtDate.getDate()+"/"+(dtDate.getMonth() + 1)+"/"+dtDate.getYear();
    					}else{
    						erreurDate = true;
    					}
    				}else{
    					erreurDate = true;
    				}
    			}
    		}else{
    			erreurDate = true;
    		}
    	}
    	return elemDate;
    }

  2. #2
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    as-tu essayé en précisant la base de conversion pour parseInt().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parseInt(tbDate[0], 10);
    Il s'agit d'un bug déjà identifié ...

    A+

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 115
    Points
    115
    Par défaut
    Merci pour ta réponse, mais cela continu à renvoyer '1/12/2007' au lieu de '30/12/2007' (j'ai purgé tous mes caches)

  4. #4
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 115
    Points
    115
    Par défaut a compris! (enfin je crois)
    Ayé

    je viens de transformer ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var dtDate = new Date();
    dtDate.setDate(jour);
    dtDate.setMonth(mois-1);
    dtDate.setYear(annee);
    elemDate.value = dtDate.getDate()+"/"+(dtDate.getMonth() + 1)+"/"+dtDate.getYear();
    en cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var dtDate = new Date();
    dtDate.setYear(annee);
    dtDate.setMonth(mois-1);
    dtDate.setDate(jour);
    elemDate.value = dtDate.getDate()+"/"+(dtDate.getMonth() + 1)+"/"+dtDate.getYear();
    et du coup cela fonctionne parfaitement, il y aurait une conversion implicite dans l'objet javascript????

  5. #5
    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 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    oui en plus c'est un sujet que j'ai déja traité ... j'avais oublié

    le fait de definir d'abord l'année permet ensuite d'attribuer le bon nombre de jours aux mois en focntion des années bissextiles ou non, pareil pour le moi avant les jours ...

    l'ordre est primordial

    année, mois, jour

  6. #6
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 115
    Points
    115
    Par défaut
    Un grand MERKI


  7. #7
    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 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Ben vraiment pas de quoi ... vu que tu as trouvé tout seul

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

Discussions similaires

  1. Controle de dates dans ACCESS 2003
    Par Invité dans le forum Access
    Réponses: 2
    Dernier message: 26/05/2006, 14h29
  2. controle de date(superieur ou inférieur)
    Par PAYASS59 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 10/05/2006, 18h06
  3. Controle champs Date
    Par letudiant1 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/04/2006, 15h33
  4. controle champs date
    Par flo456 dans le forum ASP
    Réponses: 12
    Dernier message: 07/04/2006, 14h04
  5. requete avec tri sur date erronée
    Par olivll dans le forum Access
    Réponses: 11
    Dernier message: 20/10/2005, 16h45

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