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


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Comparaison de deux dates
    dans le script jS, j'ai tenté sans succès de comparer deux date. Une qui vient d'un formulaire, l'autre la date du jour. Si quelqu'un peu m’aiguiller ...

    je défini la date actuelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var dateactuelle = new Date();
    je fais la différence entre date actuelle et date de naissance issue du form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var difference = dateactuelle - date_n;
    Le résultat doit être en ms, si j'ai bien compris.
    18 ans correspond à 567648000000 ms
    (je me fiche de la précision)
    donc, si la différence est inférieure à 567648000000 , je renvoi unee erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (difference.value < "567648000000")                                  
              {alert("Vous êtes mineur."); 
                 date_n.focus(); 
                  return false; 
              }
    Ce qui me donne en global :

    Code HTML : 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
    41
    42
    43
    44
    45
    46
    47
    <!DOCTYPE html>
    <html>
      <head>
        <title>Titre du document</title>
      </head>
      <body>
        <h2 style="text-align: center"> Formulaire d'inscription </h2>
        <form name="contact" action="/submit.php" onsubmit="return verif()" method="post">
          <div>
            <label for="nom">Nom:</label>
            <input type="text" id="nom" size="60" name="nom">
          </div>
          <br>
          <div>
            <label for="date_n">Date de naissance:</label>
            <input type="date" id="date_n" name="date_n"> 
          </div>
          <br>
         <div class="buttons">
            <input type="submit" value="Envoyer" name="Envoyer">
          </div>
        </form>
        <script> 
          function verif()                                    
          { 
              var nom = document.forms["contact"]["nom"];               
              var date_n = document.forms["contact"]["date_n"];
              var dateactuelle = new Date();
        var difference = dateactuelle - date_n;
     
            if (difference.value < "567648000000")                                  
              {alert("Vous êtes mineur."); 
                 date_n.focus(); 
                  return false; 
              } 
             
     
              if (nom.value == "")                                  
              { alert("Mettez votre nom."); 
                  nom.focus(); 
                  return false; 
              } 
             
          }
        </script> 
      </body>
    </html>

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 177
    Points
    17 177
    Par défaut
    Salut

    Tu ne nous mets pas sous quelle forme est la variable date_n, est-elle elle aussi exprimée en mSc ?
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    La variable date_n provient donc d'un formulaire HTML en UFT8.
    donc, à priori, de type "2018-07-22"

  4. #4
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Salut,
    date_n est un élément input, ce que tu indiques correspond plutôt à date_n.value.

    Du coup la différence var difference = dateactuelle - date_n; n'a pas de sens (même si on remplace date_n par date_n.value) car dateactuelle est un objet Date... Mais on peut faire : var difference = dateactuelle - new Date(date_n.value).

    Ensuite il faut remplacer if (difference.value < "567648000000") par if (difference < 567648000000) car du coup la variable difference contient le nombre de ms (difference.value est undefined) et on doit donc la comparer à un nombre or "567648000000" est une string et non un nombre, à remplacer donc par 567648000000.


    PS: Je crois (à confirmer) qu'il vaut mieux faire ce genre de vérification coté serveur mais bon peut-être qu'ici c'est inutile vu que de toute façon on peut tricher (sans modifier le code JS) en mettant une fausse date de naissance...

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup. Cela m'enlève une belle épine du pied.
    cela fonctionne.

    Je ferai bien ces versifications côté serveur, d'autant que je suis bien plus à l'aise en php. Cela étant, je je ne sais pas géré le retour vers le formulaire.

Discussions similaires

  1. [MySQL] comparaison de deux dates dans un ordre sql
    Par opeo dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/03/2007, 14h34
  2. comparaison de deux dates
    Par gloglo dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 16/01/2007, 13h39
  3. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 11h16
  4. comparaison de deux dates
    Par colombe dans le forum Bases de données
    Réponses: 4
    Dernier message: 13/07/2006, 18h44
  5. [VB6] Comparaison de deux dates dans une requête
    Par paradeofphp dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/06/2006, 19h45

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