Nombre d'un meme jour de la semaine dans le mois

Description

Suite à une question sur le forum et concernant: "comment récupérer le nombre de Lundi, Mardi...etc pour un mois donné, je vous livre un exemple deux fonctions répondant à cela...

Le code peut paraître long mais vous méritez une présentation soignée, enfin d'après moi ;0)

Source / Exemple :


<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Date"   CONTENT="01.02.2006">
<META NAME="Author" CONTENT="Gérard FERRAZ">
<TITLE>Nombre Même Jour d'un Mois...</TITLE>
<STYLE>
BODY   {font-size:13px;font-family:Verdana;}
TD     {font-size:13px;font-family:Verdana;text-align:center;}
SELECT {font-size:13px;font-family:Verdana;}
INPUT  {font-size:13px;font-family:Verdana;}
#IFct  {color:#ffffff;text-align:left;font-style: italic}
#Left  {color:#0000ff;text-align:left;}
#Bleu  {color:#0000ff;}
#Rouge {color:#ff0000;}
</STYLE>
<SCRIPT LANGUAGE="JavaScript">
//-- Données pour les initialisations 
var szJour=new Array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
var szMois=new Array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
var A_Deb = 2000;
var A_Fin = 2020;
//-----------------------------
function DIV_Write( div_, txt_){
  if( document.getElementById){
    document.getElementById( div_).innerHTML = txt_;
    return;
  }
  if( document.all){
    document.all[div_].innerHTML = txt_;
    return;
  }
  if( document.layers){
    with( document.layers[div_]){
      document.open();
      document.write( html_);
      document.close();
    }
  }
}
//----------------------------------------------
// Calcul le Nbr d'1 Jour dans le mois
//----------------------------------------------
function GetNbrMemeJour(j_, m_, a_){
  var RefMois;
  var D_Date  = new Date();
  var D_Jour  = D_Date.getDay();
  var D_Mois  = D_Date.getMonth();
  var D_Annee = D_Date.getFullYear();
  var NbrJour = 0;

  //-- Init des Valeurs
  if( j_)
    D_Date.setDate(1);                // on met la date au 1st
  if( m_!=null)
    D_Date.setMonth(m_);              // on place le mois
  if( a_!=null)
    D_Date.setYear(a_);               // on place l'année

  RefMois = D_Date.getMonth();        // le mois de réfèrence

  //-- On demande à JavaScript de faire le Boulot --//
  for( i=1; i <32 ;i++){              // Nbr Jour Max 31
    D_Date.setDate(i);
    D_Mois    = D_Date.getMonth();    // on récupère le mois
    D_NumJour = D_Date.getDay();      // la position du jour
    if( RefMois != D_Mois){           // On change de Mois
      break;
    }
    if( D_NumJour == j_)
      NbrJour++;
  }
  return( NbrJour);
}
//----------------------------------------------
// La même mais on retourne tous les résulats
//----------------------------------------------
function GetAllMemeJour(j_, m_, a_){
  var RefMois;
  var D_Date  = new Date();
  var D_Jour  = D_Date.getDay();
  var D_Mois  = D_Date.getMonth();
  var D_Annee = D_Date.getFullYear();
  var T_Jour  = new Array(0,0,0,0,0,0,0); // Tableau compteur

  //-- Init des Valeurs
  if( j_)
    D_Date.setDate(1);                // on met la date au 1st
  if( m_!=null)
    D_Date.setMonth(m_);              // on place le mois
  if( a_!=null)
    D_Date.setYear(a_);               // on place l'année

  RefMois = D_Date.getMonth();        // le mois de réfèrence

  //-- On demande à JavaScript de faire le Boulot --//
  for( i=1; i <32 ;i++){              // Nbr Jour Max 31
    D_Date.setDate(i);
    D_Mois    = D_Date.getMonth();    // on récupère le mois
    D_NumJour = D_Date.getDay();      // la position du jour
    if( RefMois != D_Mois){           // On change de Mois
      break;
    }
    T_Jour[D_NumJour]++;              // Incrémente Tab de Jour
  }
  return( T_Jour);
}
//----------------------------------------------
// Met les champs des <SELECT> à la date du Jour
//----------------------------------------------
function InitSelect(){
  var Maxi;
  var Num;
  var Today = new Date();
  var Jour  = Today.getDay();
  var Mois  = Today.getMonth();
  var Annee = Today.getFullYear();
  with( document.FORM){
    S_JOUR.selectedIndex = Jour;
    S_MOIS.selectedIndex = Mois;
    Maxi= S_ANNEE.options.length;
    Num = Annee -A_Deb;
    if(( Num>-1)&&( Num< Maxi))
      S_ANNEE.selectedIndex = Num;
  }
}
//----------------------------------------------
// Met à VRAI les <CHECKBOX> si selection change
//----------------------------------------------
function ChangeCheck( num_){
  with( document.FORM){
    switch( num_){
      case 1: C_JOUR.checked  =true;break;
      case 2: C_MOIS.checked  =true;break;
      case 3: C_ANNEE.checked =true;break;
    }
  }
}
//----------------------------------------------
// C'est parti...
//----------------------------------------------
function Lance(){
  var Html;
  var T_Jour= new Array();
  var Today = new Date();
  var Jour  = Today.getDay();
  var Mois  = Today.getMonth();
  var Annee = Today.getFullYear();

  //-- Récupération des champs
  with( document.FORM){
    if( C_JOUR.checked)
      Jour = S_JOUR.selectedIndex;
    if( C_MOIS.checked)
      Mois = S_MOIS.selectedIndex;
    if( C_ANNEE.checked)
      Annee = S_ANNEE.options[S_ANNEE.selectedIndex].text;
  }
  
  NbrJour = GetNbrMemeJour( Jour, Mois, Annee);

  //-- Affichage du résultats
  if( NbrJour){
    Html  =  "&nbsp;"+szMois[Mois] +" "+ Annee +" compte...<UL>";
    Html += "<LI>"+ NbrJour +" " +szJour[Jour]+"s</LI></UL>";
    DIV_Write('RESULTAT', Html);
  }
  else
    DIV_Write('RESULTAT', "<B ID='Rouge'>AIE !!! une ERREUR...</B>");

  //-- On récupére Tout
  T_Jour = GetAllMemeJour( Jour, Mois, Annee);
  if( T_Jour[0]){
    Html = "&nbsp;"+szMois[Mois] +" "+ Annee +" compte...<UL>";
    for(var i=0; i <T_Jour.length; i++)
      Html += "<LI>" +T_Jour[i]+" " +szJour[i]+"s</LI>";
    Html += "</UL>";
    DIV_Write('TOTAL', Html);
  }
  else
    DIV_Write('TOTAL', "<B ID='Rouge'>AIE !!! une ERREUR...</B>");
}
</SCRIPT>
</HEAD>
<BODY OnLoad="InitSelect();">
<CENTER>
<FORM ID="FORM" NAME="FORM">
Si les cases Jours, Mois et/ou Année ne sont pas cochées<BR>
ce sont les Jours, Mois et/ou Année courants qui sont utilisés...<BR>&nbsp;
<TABLE BORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="#d0d0d0"><TR><TD>
  <TABLE BORDER="0" CELLSPACING="5" CELLPADDING="0" BGCOLOR="#f0f0f0">
    <TR>
      <TD COLSPAN=2><B><FONT SIZE=+1>Votre Recherche</FONT></B></TD><TD>
      <INPUT TYPE="BUTTON" ID="B_ACTION" NAME="B_ACTION" VALUE="Lancer" STYLE="COLOR:#FF0000; WIDTH:60px; HEIGHT:22px" onClick="Lance();">
      </TD>
    </TR>
    <TR><TD COLSPAN=3><HR WIDTH="99%"></TD></TR>
    <TR>
      <TD><INPUT TYPE="CHECKBOX" ID="C_JOUR"  NAME="C_JOUR" CHECKED>Jour</TD>
      <TD><INPUT TYPE="CHECKBOX" ID="C_MOIS"  NAME="C_MOIS">Mois</TD>
      <TD><INPUT TYPE="CHECKBOX" ID="C_ANNEE" NAME="C_ANNEE">Année</TD>
    </TR>
    <TR>
      <TD>
        <SELECT ID="S_JOUR" NAME="S_JOUR" STYLE="WIDTH:100px; COLOR:#0000FF;" OnChange="ChangeCheck(1);">
          <SCRIPT LANGUAGE="JavaScript"> for( var i in szJour) document.write( "<OPTION>" +szJour[i]);</SCRIPT>
        </SELECT>
      </TD>
      <TD>
        <SELECT ID="S_MOIS" NAME="S_MOIS" STYLE="WIDTH:100px; COLOR:#0000FF;" OnChange="ChangeCheck(2);">
          <SCRIPT LANGUAGE="JavaScript"> for( var i in szMois) document.write( "<OPTION>" +szMois[i]);</SCRIPT>
        </SELECT>
      </TD>
      <TD>
        <SELECT ID="S_ANNEE" NAME="S_ANNEE" STYLE="WIDTH:100px; COLOR:#0000FF;" OnChange="ChangeCheck(3);">
          <SCRIPT LANGUAGE="JavaScript"> for( var i=A_Deb; i<A_Fin +1; i++) document.write( "<OPTION>" +i);</SCRIPT>
        </SELECT>
      </TD>
    </TR>
    <TR><TD ID="IFct" COLSPAN="3" HEIGHT="20"  BGCOLOR="#808080">&nbsp;Fonction GetNbrMemeJour( j_, m_, a_)</TD></TR>
    <TR><TD ID="Left" COLSPAN="3" HEIGHT="70"  BGCOLOR="#e0e0e0"><DIV ID="RESULTAT" NAME="RESULTAT"></DIV></TD></TR>
    <TR><TD ID="IFct" COLSPAN="3" HEIGHT="20"  BGCOLOR="#808080">&nbsp;Fonction GetAllMemeJour( j_, m_, a_)</TD></TR>
    <TR><TD ID="Left" COLSPAN="3" HEIGHT="180" BGCOLOR="#e0e0e0"><DIV ID="TOTAL"  NAME="TOTAL"></DIV></TD></TR>
  </TABLE>
</TD></TR></TABLE>
Amicalement <B>P</B>etole<B>T</B>eam <B ID="Bleu">;0)</B>
</FORM>
</CENTER>
</BODY>
</HTML>

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.