Résultats de 1 à 6 sur 6

Sujet : calendrier

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    10

    calendrier

    bonjour,
    j\'ai un soucis, je voudrais mettre en place un calendrier, pour des fins personnelles, et peut etre en faire profiter d\'autres, mais je n\'arrive pas a le finir.

    donc je viens vous demander un coup de main.
    :wink:

    mon pb est le suivant, j\'ai un calendrier un javascript, qui affiche le mois avec les differnets jours, comme un calendrier ordinaire, il affiche le jour choisi dans les listes deroulantes. je voudrais m\'en servir a 2 reprises, pour pouvoir calculer une duree.

    seulement, je voudrais aussi, qu\'il calcule la duree sans tenir compte des mercredis, samedis, et dimanche. comme cela est il possible?

    souhaitez vous le code?

    merci d\'essayer de m\'aider.

    anthony.

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    1 169
    Le code serait utile pour les codeur Javascript. Envoie toujours. Sinon, il faut décomposer ton problème pour le résoudre. Mais je ne comprend pas ce que tu appelle durée ... si tu pouvait nous éclairer
    A tous les membres, dite non à la (drogue...) sms-mania !

    Avant de poster, vérifiez si la réponse n'est pas dans la FAQ ou un tutorial.

    Je suis actuellement http://www.bencastricum.nl/msn/statu...83aaf40bdb.png sur MSN

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    10
    je t\'envoie le code, la duree, il s\'agit de calculer le nombre de jours entre les 2 dates, en fait c\'est pour calculer la duree de l\'absence c\'est pour cela, que je voudrais eliminer les samedis dimanches et mercredis, et par la suite autre chose, mais pour l\'instant deja ca.

    le code est assez long, il y a qq commentaires j\'espere que tu ne m\'en voudras pas.
    merci de bien vouloir y jeter un oeil.
    tu es sympa.

    Code:
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
    <script LANGUAGE=\"JavaScript\">
    /*
    SCRIPT TROUVE SUR L\'EDITEUR JAVASCRIPT
    http://www.editeurjavascript.com
    */
    var HTMLCode = \"\";
    var DaysList = new Array(\"Jour_Vide\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\", \"Dim\");
    var MonthsList = new Array(\"Mois_Vide\", \"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\");
    var MonthLength = new Array(\"Mois_longueur_vide\",31,29,31,30,31,30,31,31,30,31,30,31);
    
    var QueryDate = 0; /* Jour demande (date)*/
    var QueryMonth = 0; /* Mois demande*/
    var QueryYear = 0; /* Annee demandee*/
    var QueryDay = 0; /* Jour de la semaine du jour demande, inconnu*/
    var FirstDay = 0; /* Jour de la semaine du 1er jour du mois*/
    var WeekRef = 0; /* Numerotation des semaines*/
    var WeekOne = 0; /* Numerotation des semaines*/
    
    var Today = new Date();
    var TodaysYear = Today.getYear();
    var TodaysMonth = Today.getMonth() + 1;
    var TodaysDate = Today.getDate();
    var TodaysDay = Today.getDay() + 1;
    if (TodaysYear < 2000) { TodaysYear += 1900; }
    
    function CheckData()
    {
    QueryDate = document.Cal.Date.selectedIndex + 1;
    QueryMonth = document.Cal.Month.selectedIndex + 1;
    QueryYear = (document.Cal.Century.selectedIndex + 15) * 100 + document.Cal.Year.selectedIndex;
    MonthLength[2] = CheckLeap(QueryYear);
    
    if ((QueryYear * 10000 + QueryMonth * 100 + QueryDate) < 15821220)
    {
    alert(\"Vous avez choisi une date antérieure au 20 décembre 1582, hors du calendrier Grégorien. \\nVeuillez sélectionner une date plus récente.\");
    document.Cal.reset();
    CheckData();
    }
    else if (MonthLength[QueryMonth] < QueryDate) /* on verifie si la date est coherente*/
    {
    alert(\"Il n\'y a pas \" + QueryDate + \" jours en \" + MonthsList[QueryMonth] + \" \" + QueryYear + \" mais \" + MonthLength[QueryMonth] + \". \\nVeuillez choisir une autre date.\");
    document.Cal.reset();
    CheckData();
    }
    else { DisplaySchedule(); }
    
    }
    function CheckLeap(yy)
    {
    if ((yy % 100 != 0 && yy % 4 == 0) || (yy % 400 == 0)) { return 29; }
    else { return 28; }
    }
    
    function DefWeekNum(dd)
    {
    numd = 0;
    numw = 0;
    for (n=1; n<QueryMonth; n++)
    {
    numd += MonthLength[n];
    }
    numd = numd + dd - (9 - DefDateDay(QueryYear,1,1));
    numw = Math.floor(numd / 7) + 1;
    
    if (DefDateDay(QueryYear,1,1) == 1) { numw++; }
    return numw;
    }
    
    function DefDateDay(yy,mm,dd)
    {
    return Math.floor((Date2Days(yy,mm,dd)-2) % 7) + 1;
    }
    
    function Date2Days(yy,mm,dd)
    {
    if (mm > 2)
    {
    var bis = Math.floor(yy/4) - Math.floor(yy/100) + Math.floor(yy/400);
    var zy = Math.floor(yy * 365 + bis);
    var zm = (mm-1) * 31 - Math.floor(mm * 0.4 + 2.3);
    return (zy + zm + dd);
    }
    else
    {
    var bis = Math.floor((yy-1)/4) - Math.floor((yy-1)/100) + Math.floor((yy-1)/400);
    var zy = Math.floor(yy * 365 + bis);
    return (zy + (mm-1) * 31 + dd);
    }
    }
    
    function DisplaySchedule()
    {
    HTMLCode = \"<table cellspacing=0 cellpadding=3 border=3 bordercolor=#000033>\";
    QueryDay = DefDateDay(QueryYear,QueryMonth,QueryDate);
    WeekRef = DefWeekNum(QueryDate);
    WeekOne = DefWeekNum(1);
    HTMLCode += \"<tr align=center><td colspan=8 class=TITRE><b>\" + MonthsList[QueryMonth] + \" \" + QueryYear + \"</b></td></tr><tr align=center>\";
    
    for (s=1; s<8; s++)
    {
    if (QueryDay == s) { HTMLCode += \"<td><b><font color=#ff0000>\" + DaysList[s] + \"</font></b></td>\"; }
    else { HTMLCode += \"<td><b>\" + DaysList[s] + \"</b></td>\"; }
    }
    
    HTMLCode += \"<td><b><font color=#888888>Sem</font></b></td></tr>\";
    a = 0;
    
    for (i=(1-DefDateDay(QueryYear,QueryMonth,1)); i<MonthLength[QueryMonth]; i++)
    {
    HTMLCode += \"<tr align=center>\";
    for (j=1; j<8; j++)
    {
    if ((i+j) <= 0) { HTMLCode += \"<td> </td>\"; }
    else if ((i+j) == QueryDate) { HTMLCode += \"<td><b><font color=#ff0000>\" + (i+j) + \"</font></b></td>\"; }
    else if ((i+j) > MonthLength[QueryMonth]) { HTMLCode += \"<td> </td>\"; }
    else { HTMLCode += \"<td>\" + (i+j) + \"</td>\"; }
    }
    
    if ((WeekOne+a) == WeekRef) { HTMLCode += \"<td><b><font color=#00aa00>\" + WeekRef + \"</font></b></td>\"; }
    else { HTMLCode += \"<td><font color=#888888>\" + (WeekOne+a) + \"</font></td>\"; }
    HTMLCode += \"</tr>\";
    a++;
    i = i + 6;
    }
    
    Calendrier.innerHTML = HTMLCode + \"</table>\";
    }
    </script></p>
      </center></div>
    </form>
    </head>
    
    <body bgcolor=\"#FFFFFF\" text=\"#000000\">
    <!--DEBUT CALENDRIER-->
    
    <form name=\"Cal\">
      <div align=\"center\"><div align=\"center\"><center><h3><font color=\"#008000\">CALENDRIER
      PERPETUEL</font></h3>
      </center></div><script language=\"JavaScript1.2\" type=\"text/javascript\">
    DateText = \"<select name=\\\"Date\\\">\"
    for (d=1; d<32; d++)
    {
    DateText += \"<option\";
    if (d == TodaysDate) { DateText += \" SELECTED\"; }
    DateText += \">\";
    if (d < 10) { DateText += \"0\"; }
    DateText += d + \"</option>\";
    }
    DateText += \"</select>\";
    MonthText = \"<select name=\\\"Month\\\">\"
    for (m=1; m<13; m++)
    {
    MonthText += \"<option\";
    if (m == TodaysMonth) { MonthText += \" SELECTED\"; }
    MonthText += \">\";
    MonthText += MonthsList[m] + \"</option>\";
    }
    MonthText += \"</select>\";
    CenturyText = \"<select name=\\\"Century\\\">\"
    for (c=15; c<25; c++)
    {
    CenturyText += \"<option\";
    if (c == Math.floor(TodaysYear / 100)) { CenturyText += \" SELECTED\"; }
    CenturyText += \">\" + c + \"</option>\";
    }
    CenturyText += \"</select>\";
    YearText = \"<select name=\\\"Year\\\">\";
    for (y=0; y<100; y++)
    {
    YearText += \"<option\";
    if (y == (TodaysYear - Math.floor(TodaysYear / 100) * 100)) { YearText += \" SELECTED\"; }
    YearText += \">\";
    if (y < 10) { YearText += \"0\"; }
    YearText += y + \"</option>\";
    }
    YearText += \"</select>\";
    document.write (DateText + MonthText + CenturyText + YearText);
    </script>
    </div><dl>
        <dd align=\"left\"><div align=\"center\"><center><p><input type=\"button\" value=\" OK \"
          style=\"font-family: Arial,Verdana,Helvetica;font-size: 11px; color:#330033 ;font-weight:bold;background-color: #FFCC00;
      \"
          onClick=\"CheckData()\"> <input type=\"button\" value=\" Revenir à la date courante \"
          style=\"font-family: Arial,Verdana,Helvetica;font-size: 11px; color:#330033 ;font-weight:bold;background-color: #FFCC00;\"
          onClick=\"document.Cal.reset();CheckData()\"> </p>
          </center></div></dd>
        <dd><br>
          <div id=\"Calendrier\" align=\"center\"></div></dd>
      </dl>
    </form>
    <script language=\"JavaScript1.2\" type=\"text/javascript\">CheckData()</script>
    <!--FIN CALENDRIER-->
    </body>
    </html>
    Edit par MisterV : desole j\'me suis permis d\'ajouter simplement [ code ] et [ /code ] pour mettre en valeur le code.

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    1 169
    Je ne mis connais pas assez en javascript pour décomposer ton code et l\'améliorer. Par contre, j\'ai bien réfléchi et je te propose une décomposition de ton problème d\'ensemble :

    Tu veut calculer les jours entre une date x et y... Une solution simple consiste à compter le nombre de semaine entre les dates x y. Par exemple je prend aujourd hui Lundi 14 Juin et le Mercredi 30 Juin. Il y a 16 jour soit 2 semaines et 3 jours.
    Je prend la date de dépard : Lundi .. pendant la premiere semaine il va donc y avoir 3 jours à enlever.
    Il aurai s\'agit du Jeudi, il y aurait eu 2 jours à enlever.
    Ensuite, il y a encore une semaine d\'ou trois jour à enlever. Et finalement les 3 jours restant (Lundi -> Mercredi) .. il y a le mercredi a enlevé.

    Donc pour faire plus clair ... je vais faire des sortes de fonctions de math...


    semaine = chiffres absolue de jours entre date x et y ... tout ca divisé par 7 pour avoir une semaine.
    S = absolue de (y-x)/7

    1er S : si x= lundi => 3 jour en -
    si x = jeudi => 2 jour en -
    si x= samedi => 1 jour en -
    si x = dimanche => 2 jour en -

    ensuite si (S-1) > 0 tu retire 3*(S-1) de jour

    Puis pour la derniere semaine
    Si y> lundi => tu retire 0 jour
    Si y> mercredi => tu retire 1 jours
    Si y> Samedi => tu retire 2 jour
    Si y> dimanche => tu retire 3 jour

    Je pense que ceci est bourré de fautes. Que mon systeme ne marchera pas tel quel mais c\'est peut etre une solution à exploiter et à traduire en Javascript...
    A tous les membres, dite non à la (drogue...) sms-mania !

    Avant de poster, vérifiez si la réponse n'est pas dans la FAQ ou un tutorial.

    Je suis actuellement http://www.bencastricum.nl/msn/statu...83aaf40bdb.png sur MSN

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    10
    je me posais une question, ne serais ce pas plus facile par exemple de calculer le nb de jours qui reste a compter de la date de debut, jusque la fin de l\'annee, sans tenir compte des mercredis, samedis et dimanches, et de faire la meme chose avec la date de fin?
    merci

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    1 169
    Ben, je n\'ai fait qu\'une proposition. Maintenant, c\'est sur qu\'il faut trouver une solution adapté aux langage utilisé, voir si il n\'existe pas de script équivalent dans d\'autres langages à ta porté pour les analyser !
    A tous les membres, dite non à la (drogue...) sms-mania !

    Avant de poster, vérifiez si la réponse n'est pas dans la FAQ ou un tutorial.

    Je suis actuellement http://www.bencastricum.nl/msn/statu...83aaf40bdb.png sur MSN

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé