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 :

Boucle de dates valides


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 327
    Par défaut Boucle de dates valides
    Salut tout le monde,
    voila, je galère sur un truc ch****....

    Je saisie une date début et une date fin à l'aide de 6 listes déroulantes : jour_debut, mois_debut, annee_debut et jour_fin, mois_fin et annee_fin.
    Il faut que je remplisse une liste normale avec toutes les dates VALIDES situées entres la date début et la date fin.

    Merci d'avance...

  2. #2
    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
    il suffit d'incrémenter et de faire un test isDate avec une fonction personnelle:

    voici un exemple qu'il te faudra adapter, mais tout y est ...


    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
    37
    38
    39
    40
    41
    <script type='text/javascript'>
    function isDate(dateStr) {
     
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?
     
    if (matchArray == null) {
    alert("Veuillez entrer une date au format jj/mm/aaaa or jj-mm-aaaa.");
    return false;
    }
     
     
    day = matchArray[1];
    month = matchArray[3]; 
    year = matchArray[5];
     
    if (month < 1 || month > 12) { // check month range
    alert("Le mois doit être compris entre 1 et 12.");
    return false;
    }
     
    if (day < 1 || day > 31) {
    alert("La date du jour doit être comprise entre 1 et 31.");
    return false;
    }
     
    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
    alert("Le mois "+month+" ne comporte pas 31 jours !")
    return false;
    }
     
    if (month == 2) { // check for february 29th
    var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
    if (day > 29 || (day==29 && !isleap)) {
    alert("Fevrier " + year + " ne comporte pas " + day + " jours!");
    return false;
    }
    }
    return true; // date is valid
    }
    </script>
    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 !

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    alterjsnative:

    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
    <script type="text/javascript">
     
     
    var debut=Date.UTC(2007,1,25);// date de début définie
    var fin=Date.UTC(2007,3,25);// date de fin définie
     
    var cal="";
    var i=0;
    var verif=debut;
    var go, y, m, d, mois, jour;
     
     
    // on crée une nouvelle date + un jour 
    //tant que la date de fin n'est pas atteinte
    while(verif<fin){
    	go=new Date(debut+1000*3600*24*i)
     
    	y=go.getUTCFullYear();
    	m=go.getUTCMonth();
    	d=go.getUTCDate();
    	verif=Date.UTC(y,m,d);
     
    	mois=(m+1)<10?"0"+(m+1):(m+1);// on corrige le numéro du mois (+1)
    	jour=d<10?"0"+d:d;
     
    	cal+=jour+" "+mois+" "+y+"\n";// on affiche à la française parce que je préfère
    	i++
    }
     
    alert(cal)
     
     
    </script>

  4. #4
    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 m'incline devant ce jeux de mot !

    sinon avec un setday +1 ça passe pas au mois suivant ?
    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 !

  5. #5
    Membre éprouvé Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 327
    Par défaut
    Merci de vos réponses.

    Mais, Java, je ne vois pas où est-ce que tu vérifies validité de la date ?

    En fait, il faut que la boucle ne prenne en compte QUE les dates valides.

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Les fonctions date JS ne te renvoient que des dates valides ...

    A+

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

Discussions similaires

  1. tester si date valide ou pas
    Par jadey dans le forum SQL
    Réponses: 14
    Dernier message: 21/08/2013, 12h09
  2. Date valide dans une requete SQL
    Par Seth77 dans le forum Général Dotnet
    Réponses: 17
    Dernier message: 13/06/2007, 13h36
  3. Réponses: 2
    Dernier message: 21/03/2007, 16h06
  4. obtenir toutes les dates valides comprises entre dates
    Par captainamerica75 dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/06/2006, 13h25

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