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 :

regexp de validation date et heure


Sujet :

JavaScript

  1. #1
    Membre �clair� Avatar de PoichOU
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juillet 2006
    Messages
    328
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2006
    Messages : 328
    Par d�faut regexp de validation date et heure
    Bonjour � tous

    j'ai trouv� un code sur internet qui me permet de valider une date au format dd/MM/yyyy (exemple : 21/03/2007)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    var dateString = "21/03/2007";
    var reg=new RegExp("^[0-9]{2}[/]{1}[0-9]{2}[/]{1}[0-9]{4}$","g");
    reg.test(dateString);
    je voudrais la m�me chose pour un format dd/mm/yyyy mm:hh

    quelqu'un pourrais me dire ce que je dois rajouter ?


    merci
    PoichOU

  2. #2
    Membre chevronn�
    Inscrit en
    Juin 2007
    Messages
    459
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par d�faut
    Je pense que ton expression est assez permissive. Celle-ci devrait �tre plus adapt�e :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    "^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[0-9]{4}$"
    Avec les hh:mm :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    "^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[0-9]{4} ([01][0-9]|2[0-3]):([0-5][0-9])$"

  3. #3
    Membre �clair� Avatar de PoichOU
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juillet 2006
    Messages
    328
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2006
    Messages : 328
    Par d�faut
    merci de ta r�ponse

  4. #4
    Membre �clair� Avatar de PoichOU
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juillet 2006
    Messages
    328
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2006
    Messages : 328
    Par d�faut
    la m�me chose avec des fonctions javascripts (�a permet notamment de tester les ann�es bissextiles
    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
    		function isDate(sDate){
    			var sSeparator = '/';
    			if(!sDate.match("^[0-9]{2}/[0-9]{2}/[0-9]{4}$")) return false;
    			var arDate = sDate.split(sSeparator);
    			var iDay = parseInt(arDate[0]);
    			var iMonth = parseInt(arDate[1]);
    			var iYear = parseInt(arDate[2]);
    			var arDayPerMonth = [31,(isLeapYear(iYear))?29:28,31,30,31,30,31,31,30,31,30,31];
    			if(!arDayPerMonth[iMonth-1]) return false;
    			return (iDay <= arDayPerMonth[iMonth-1] && iDay > 0);
    		}
     
    		function isHour(sHour){
    			var sSeparator = ':';
    			var withSeconds = false;
    			if(sHour.match("^[0-9]{2}:[0-9]{2}:[0-9]{2}$")) var withSeconds = true;
    			else if(!sHour.match("^[0-9]{2}:[0-9]{2}$")) return false;
    			var arHour = sHour.split(sSeparator);
    			var iHour = parseInt(arHour[0]);
    			var iMinute = parseInt(arHour[1]);
    			if(withSeconds)	var iSecs = parseInt(arHour[2]);
    			else 						var iSecs = 0;
    			return 	(iHour >= 0 && iHour < 24) && (iMinute >= 0 && iMinute < 60) && (iSecs >= 0 && iSecs < 60);
    		}
     
    		function isLeapYear(iYear){
    			return ((iYear%4==0 && iYear%100!=0) || iYear%400==0);
    		}
     
    		function isDateHour(sDateHour){
    			var sSeparator = ' ';
    			var arDateHour = sDateHour.split(sSeparator);
    			return (arDateHour[0] && arDateHour[1] && isDate(arDateHour[0]) && isHour(arDateHour[1]));
    		}

    merci skywalk3r


  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 659
    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 659
    Billets dans le blog
    1
    Par d�faut
    y'avait �a doans notre FAQ ou dans les codes source ...
    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 !

  6. #6
    Invit� de passage
    Homme Profil pro
    Architecte de syst�me d'information
    Inscrit en
    Janvier 2012
    Messages
    1
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : Architecte de syst�me d'information

    Informations forums :
    Inscription : Janvier 2012
    Messages : 1
    Par d�faut
    Salut tous,

    je d�terre le sujet en ajoutant que le parseInt() est un peu violent, tel que. Vaut mieux lui pr�ciser qu'on est en base 10, car le 0 non significatif le fait partir en base 8 (octal) pour le mois d'ao�t par exemple... ooops !

    Remplacer tous les parseInt comme suit (ajouter ,10) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var iDay = parseInt(arDate[0],10);

  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 659
    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 659
    Billets dans le blog
    1
    Par d�faut
    var iDay = arDate[0]*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 !

  8. #8
    Membre �clair� Avatar de PoichOU
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juillet 2006
    Messages
    328
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2006
    Messages : 328
    Par d�faut
    Hello,

    d'accord avec toi armlis, si on utilise parseInt il faut pr�ciser la base 10 (j'me suis d�j� fait avoir)

    Et perso je pr�f�re :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var iDay = parseInt(arDate[0],10);

    A+
    PoichOU

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par d�faut
    Et d'ailleurs pour tester une date, rien ne vaut de faire un new Date() et de retester les valeurs entrantes avec les valeurs de date via getDate(), getMonth(), getYear()

  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 659
    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 659
    Billets dans le blog
    1
    Par d�faut
    Je plussoie Duke dans le sens ou une regexp ne peut valider qu'un format et non un type.
    Une reg validera le 31/02/2012

    mais rien de nouveau sous le soleil: En 2003, JavaTwister nous proposait d�ja ceci :
    http://www.developpez.net/forums/d14...ce/#post878767
    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 !

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par d�faut
    Au passage voila le code � quoi je faisais allusion, oui je l'ai r�duit au strict minimum mais il fait tr�s bien son job

    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
     
    function dateValidate(y,m,d) {
        y=y*1;m=m*1-1;d=d*1;
        with(new Date(y,m,d))
            return getFullYear()==y && getMonth()==m && getDate()==d;
    }
     
    function dateStrValidate(str) {
        var a=str.match(/(\d+)/g);
        return dateValidate(a[0],a[1],a[2]);
    }
     
    dateValidate(2011,2,29) => false
    dateValidate(2012,2,29) => true
    dateStrValidate("2012/02/29") => true
    dateStrValidate("2012-02-29") => true
    dateStrValidate("2011-02-29") => false;

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Validation de la date avec heure
    Par Bes74 dans le forum VBA Access
    R�ponses: 1
    Dernier message: 18/03/2014, 08h38
  2. R�ponses: 3
    Dernier message: 24/03/2012, 10h54
  3. r�cup�rer la date et heure syst�me
    Par Rnx69 dans le forum Langage SQL
    R�ponses: 3
    Dernier message: 01/06/2005, 15h43
  4. [date et heure] convertion d'une date en cha�ne
    Par jean-jacques varvenne dans le forum SQL
    R�ponses: 5
    Dernier message: 23/03/2005, 11h31
  5. Manipulations de dates et heures
    Par benj63 dans le forum C++
    R�ponses: 5
    Dernier message: 16/12/2004, 15h09

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