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 date système date utilisateur


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Par défaut comparaison date système date utilisateur
    Salut,

    voila je coince pour comparer 2 dates dans ce format :

    M/AAAA 7/2009

    En fait j'ai un champ date ou l'utilisateur renseigne une date dans ce format :

    07/2009

    Et je souhaite faire un filtre pour comprer la date rentrée par l'utilisateur et celle du jour avec mois+1

    Exemple :

    la date du jour (date système ou je récupère le mois+1 et l'année pour l'avoir dans ce format ) donc ici la date du jour avec mois+1 est 8/2009

    la date renseigner par l'utilisateur : 07/2009

    puis après transformation dans ma fonction cela devient 7/2009

    Si la date renseignée par l'utilisateur est inférieur à celle du système alors j'affiche un message d'erreur date invalide.

    Voila j'ai commencé avec cela je récupère mes deux dates dans ce format m/aaaa mais après je bloque pour la comparaison :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function dateDebut() {
    // date du jour
    var DateJour=new Date()
    var mois =DateJour.getMonth()+2
    var annee =DateJour.getFullYear()
    var dateJ = (mois)+"/"+(annee)
    // date renseignée par l'utilisateur
    var dateD = document.forms["saisie_avk"].elements["Date_Deb_Validite"].value
    var DateD = dateD.replace(/0(\d\/)/,"$1")


    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Salut,
    Tu peux voir comment comparer 2 date
    http://javascript.developpez.com/faq...dates.comparer

  3. #3
    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
    avec le format M/AAAA il te suffirati de faire un split('/') puis replace du 0 sur M et un reverse join pour que les chaine deviennent comparables
    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 !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Par défaut
    Pour l'instant avec mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var DateJour=new Date()
    var mois =DateJour.getMonth()+2
    var annee =DateJour.getFullYear()
    var dateJ = (mois)+"/"+(annee)
    document.write(dateJ)
    document.write("<br>")
    // date renseignée par l'utilisateur
    var dateD = "10/2009"
    // document.forms["saisie_avk"].elements["Date_Deb_Validite"].value
    var DateD = dateD.replace(/0(\d\/)/,"$1") 
    document.write(DateD)
    j'ai ceci en résultat :

    date système : 8/2009

    date début champ : 6/2009

    Maintenant comment je peux faire pour comparer mes deux dates ?

    Si date début champ < date système alors message erreur votre date de début doit être supérieure ou egale à la date système


    Merci

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    avec le format M/AAAA il te suffirati de faire un split('/') puis replace du 0 sur M et un reverse join pour que les chaine deviennent comparables

  6. #6
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // date renseignée par l'utilisateur
    var dateD = "01/2009";
    var DateD = dateD.replace(/^(\d)\//,"0$1").split('/').reverse().join('');
     
    //date de référence
    var dateR = "03/2009";
    var DateR = dateR.replace(/^(\d)\//,"0$1").split('/').reverse().join('');
    var test=(DateR>DateD)?"antérieure":"postérieure";
    var test=(DateR==DateD)?"égale à":test;
    alert("la date saisie est "+test+" à la date de référence");
    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 !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Par défaut
    Merci SpaceFrog,

    j'ai modifié un peu le code par rapport à mon besoin car mes dates ne sont pas en dures. j'utilise une date système et l'autre date est récupérée d'un champ.

    Le problème c'est que quand je rentre une date par exemple :

    Date système = 08/2009
    date début champ = 02/2010

    mon message m'affiche que la date est antérieure à la date de référence !!!
    Alors que normalement elle devrait être postérieure.....

    voici le code complet :

    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
     
    <html>
    <head>
    <SCRIPT language=javascript>
     
     
    // date renseignée par l'utilisateur
    function dateDebut() {
    var dateD = document.forms["saisie_avk"].elements["Date_Deb_Validite"].value;
    var DateD = dateD.replace(/^(\d)\//,"0$1").split('/').join('');
    document.write(DateD)
    document.write("<br>")
    //date du système
    var DateJour=new Date()
    var mois =DateJour.getMonth()+2
    var annee =DateJour.getFullYear()
    var dateR = (mois)+"/"+(annee)
    var DateR = dateR.replace(/^(\d)\//,"0$1").split('/').reverse().join('');
    var test=(DateR>DateD)?"antérieure":"postérieure";
    var test=(DateR==DateD)?"égale à":test;
    alert("la date de début est "+test+" à la date de référence, veuillez ressaisir une date valide");
     
    }
     
    </script>
    <body>
    <form method="post" action=""  name="saisie_avk" >
    <td width="300">	
    			<font   size ="2"><b><font color="red">*</font>
    						AVK : Date de début de validité (mm/aaaa)
    					</b></font><input  name="Date_Deb_Validite"  id="dte_deb_validite"  size=10 maxlength=7   onchange="dateDebut(this.form.Date_Deb_Validite)" >
    				    </td>
    </form>
    </body>
    </head>
    </html>
    merci encore

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Par défaut
    Merci SpaceFrog,

    j'ai modifié un peu le code par rapport à mon besoin car mes dates ne sont pas en dures. j'utilise une date système et l'autre date est récupérée d'un champ.

    Le problème c'est que quand je rentre une date par exemple :

    Date système = 08/2009
    date début champ = 02/2010

    mon message m'affiche que la date est antérieure à la date de référence !!!
    Alors que normalement elle devrait être postérieure.....

    voici le code complet :

    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
     
    <html>
    <head>
    <SCRIPT language=javascript>
     
     
    // date renseignée par l'utilisateur
    function dateDebut() {
    var dateD = document.forms["saisie_avk"].elements["Date_Deb_Validite"].value;
    var DateD = dateD.replace(/^(\d)\//,"0$1").split('/').join('');
    document.write(DateD)
    document.write("<br>")
    //date du système
    var DateJour=new Date()
    var mois =DateJour.getMonth()+2
    var annee =DateJour.getFullYear()
    var dateR = (mois)+"/"+(annee)
    var DateR = dateR.replace(/^(\d)\//,"0$1").split('/').reverse().join('');
    var test=(DateR>DateD)?"antérieure":"postérieure";
    var test=(DateR==DateD)?"égale à":test;
    alert("la date de début est "+test+" à la date de référence, veuillez ressaisir une date valide");
     
    }
     
    </script>
    <body>
    <form method="post" action=""  name="saisie_avk" >
    <td width="300">	
    			<font   size ="2"><b><font color="red">*</font>
    						AVK : Date de début de validité (mm/aaaa)
    					</b></font><input  name="Date_Deb_Validite"  id="dte_deb_validite"  size=10 maxlength=7   onchange="dateDebut(this.form.Date_Deb_Validite)" >
    				    </td>
    </form>
    </body>
    </head>
    </html>
    merci encore

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Par défaut
    En fait

    voila moi je souhaite utiliser la date système comme date de référence.

    j'utilise donc new date()

    puis j'utilise getMonth() et getFullYear() pour récupérer le mois et l'année et enfin je concatène le tout.

    Donc j'obtiens une date dans ce format : 8/2009

    Puis j'utilise ta fonction replace pour mettre ma date dans ce format :

    082009


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ar DateJour=new Date()
    var mois =DateJour.getMonth()+2
    var annee =DateJour.getFullYear()
    var dateR = (mois)+"/"+(annee)
    mais le problème c'est que ma date de début est au format 201002 donc cela pose un problème pour les comparer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var DateR = dateR.replace(/^(\d)\//,"0$1").split('/').reverse().join('');
    Donc en fait il me faut transformer ma date de référence 082009 en 200908 pour que la comparaison fonctionne

    mais comment faire car ta fonction replace me rajoute bien le 0 dans mon mois mais me sort le résultat sous cette forme 082009 alors qu'il me faut 200908

    Merci d'avance

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/03/2012, 01h00
  2. Réponses: 5
    Dernier message: 08/07/2011, 11h09
  3. [MySQL] comparaison d'une date avec la date système
    Par kawther dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/12/2007, 03h05
  4. [DB2] - Comparer une date à la date système
    Par rémi_tounul dans le forum DB2
    Réponses: 3
    Dernier message: 19/05/2005, 11h45
  5. comparaison de 2 dates
    Par eisti dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/08/2003, 11h33

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