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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 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
    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 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
    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);
    à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var iDay = arDate[0]*1;
    A+
    PoichOU

+ 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