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 :

encore pb de date


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de moonia
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 283
    Points : 82
    Points
    82
    Par défaut encore pb de date
    Coucou
    J'ai un pb concernant les dates
    Donc voila je récupere dans mon formulaire une date comme ceçi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><input type="text" name="date_realisation1" size="10" value = "jj/mm/aaaa"></td>
    mais je ne sais pas comment faire pour tester si ma date est correcte ou pas c-à-d ( si elle n'est pas < a la date actuelle ou pas ) ou si son format corresspond au format demandé qui est ( jj/mm/ aaaa)

    Merci d'avance pour votre aide

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 480
    Points
    3 480
    Par défaut
    Salut,

    Voici un exemple de comparaison de dates en Javascript, trouvé sur le net :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var myDate=new Date()
    myDate.setFullYear(2010,0,14)
     
    var today = new Date()
     
    if (myDate>today)
      alert("Today is before 14th January 2010")
    else
      alert("Today is after 14th January 2010")
    Ta problématique sera seulement d'utiliser la méthode setFullYear avec les bons paramètres, donc il faudra éclater ta chaine avec la méthode split() de l'objet String, et récupérer les éléments JJ, MM et AAAA dans des int.

    A+
    K

  3. #3
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par KiLVaiDeN
    Ta problématique sera seulement d'utiliser la méthode setFullYear avec les bons paramètres, donc il faudra éclater ta chaine avec la méthode split() de l'objet String, et récupérer les éléments JJ, MM et AAAA dans des int.
    setFullYear, ça marche pas comme ça, chez moi

    Sinon, une partie de la question est dans la
    http://javascript.developpez.com/faq...dates.comparer

    (il y a une erreur entre d et d1, mais c'est pas violent).

  4. #4
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 480
    Points
    3 480
    Par défaut
    setFullYear(year, [month], [day]) Sets the year of the Date object. (year: 4 digit year).
    Sur le site JavaScript Kit

    C'est un raccourci au lieu d'utiliser l'appel de plusieurs méthodes, t'en utilises qu'un seul

    En quoi est-ce différence de ce que tu connais ?

    A+
    K

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    bonjour,

    son format corresspond au format demandé qui est ( jj/mm/ aaaa)
    pour tester si la date est au bon 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <html>
    <head>
    <title></title>
     
    <script type="text/javascript">
    <!--
    function TestDate(){
    var inDate = document.getElementById("date_realisation1").value;
     
    var Expression = new RegExp("^[0-9]{2}/{1}[0-9]{2}/{1}[0-9]{4}$","gi")
     
    if (Expression.test(inDate))
      alert("Format OK.")
    else
      alert("Entrez une date au format jj/mm/aaaa")
    }
     
    //-->
    </script>
     
    </head>
     
    <body>
    <input type="text" id="date_realisation1" size="10" value = "jj/mm/aaaa">
    <input type="button" value="Bouton" onclick="TestDate()">
     
    </body>
     
    </html>
    renvoie "true" si la date est au bon format.

    [edit]modification du nom de la fonction et ajout du test[/edit]

  6. #6
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 480
    Points
    3 480
    Par défaut
    Tu as un souci dans ton test avec expressions régulières si il tente de mettre 70 pour JJ ou 30 pour MM.

    L'avantage de la création d'un objet Date, est que ça implique de récupérer les entiers, et donc ça permet de faire une batterie de test pour s'assurer qu'ils sont dans les bonnes plages.

    Un autre avantage est que tu peux directement faire une comparaison de date, si tu en as besoin, par exemple avec la date du jour ( apparement la personne qui a posté initialement en a besoin, en plus de la vérification )

    A+
    K

  7. #7
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Tu as un souci dans ton test avec expressions régulières si il tente de mettre 70 pour JJ ou 30 pour MM.
    oui c'est vrai. Mais dans un premier temps, il s'agit au départ de vérifier si la date est au format jj/mm/aaaa. Si vrai, on vérifie les valeurs de jj, m, aaaa (comparaison des dates).

  8. #8
    Membre régulier Avatar de moonia
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 283
    Points : 82
    Points
    82
    Par défaut
    ok merci pour vos réponses je vais voir comment je peux utilser date() "je ne l'ai jamais utilser"
    @+

  9. #9
    Membre régulier Avatar de moonia
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 283
    Points : 82
    Points
    82
    Par défaut
    ça ne marche pas Auteur pour verifier le format de la date

  10. #10
    Membre régulier Avatar de moonia
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 283
    Points : 82
    Points
    82
    Par défaut
    Voici une partie du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function verif_champs()
    {
        function TestDate(){
    var inDate = document.getElementById("date_realisation_1").value;
     
    var Expression = new RegExp("^[0-9]{2}/{1}[0-9]{2}/{1}[0-9]{4}$","gi")
     
    if (Expression.test(inDate))
      alert("Format OK.")
    else
      alert("Entrez une date au format jj/mm/aaaa")
    }
    .
    .
    .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form name="page_form" action="<?php echo $_SERVER['PHP_SELF']; ?>"  method="post" id= "hsides" onSubmit="return verif_champs()">...
    <td><input type="text" name="date_realisation1" id="date_realisation_1" size="10" value = "jj/mm/aa"></td> 
     
        <td >

  11. #11
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par KiLVaiDeN
    En quoi est-ce différence de ce que tu connais ?
    Ma question était plus sur la compatibilité de la chose. Je pensais que c'était uniquement IE, mais apparament, le principe est le même pour Mozilla. Reste à vérifier avec les autres

  12. #12
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     function verif_champs()
    {
        function TestDate(){....}
    }
    enlève function TestDate()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     function verif_champs()
    {
    var inDate = document.getElementById("date_realisation_1").value;
     
    var Expression = new RegExp("^[0-9]{2}/{1}[0-9]{2}/{1}[0-9]{4}$","gi")
     
    if (Expression.test(inDate))
      alert("Format OK.");
    else
      alert("Entrez une date au format jj/mm/aaaa");
    }
    et verif_champs doit d'après le code HTML retourner une valeur.

  13. #13
    Membre régulier Avatar de moonia
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 283
    Points : 82
    Points
    82
    Par défaut
    cool ca marche
    Merci Auteur

Discussions similaires

  1. [Dates] Encore un problème de dates
    Par philippef dans le forum Langage
    Réponses: 3
    Dernier message: 04/03/2006, 12h46
  2. [Dates] Encore un problème de date
    Par philippef dans le forum Langage
    Réponses: 1
    Dernier message: 12/01/2006, 21h30
  3. Réponses: 7
    Dernier message: 07/10/2004, 23h59
  4. Encore un probléme de date avec TADO !
    Par bNoureddine dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/02/2004, 18h22
  5. probleme de date (toujours et encore des dates)
    Par Yannesco dans le forum SQL
    Réponses: 3
    Dernier message: 02/02/2004, 19h04

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