Compter le nombre d'un type de jour (de semaine) dans un mois donné

Eléphanteau du PHP | 15 Messages

19 févr. 2009, 15:52

Cette fonction permet de calculer le nombre de dimanche, lundi, mardi ... dans un mois.
Les variables sont le 'nom du jour de la semaine' (sous forme de numéro 0:dimanche 1:Lundi ...), le mois et l'année :

Code : Tout sélectionner

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); }
Attention : Un bug existe, il faut enlever un mois à la variable, pour tomber sur le bon calcul (pour le calcul du mois de 'mars', mettre '2'). Impossible avec mes connaissances de le corriger.

Est ce que quelqu'un peux transformer cette fonction JS en du bon PHP, comme on l'adore.

Merci d'avance à tous ceux qui vont y penser, même si c'est sans résultat.
Modifié en dernier par zazadec le 19 févr. 2009, 18:20, modifié 2 fois.
Julien
------

Eléphant du PHP | 145 Messages

19 févr. 2009, 16:01

Hummm le faire à ta place, sans doute pas :)

Mais par contre, rien ne t'empêche d'essayer toi même et si besoin est nécessaire, nous serons ravis de t'aider en cas de problèmes :D

Albat90 ;)
La culture, c'est comme la confiture, moins on en a, plus on l'étale.

Eléphanteau du PHP | 15 Messages

19 févr. 2009, 16:29

Je ne voulais pas réinventer la poudre, mais bon la poudre maison c'est toujours mieux.

Alors voici pour ceux que ça intéresse :

Code : Tout sélectionner

function CalculNbreJourDsMois($numjour, $mois, $annee)) { $jour = 1; $SeqJour = ''; while (checkdate ($mois, $jour ++, $annee) === true) { $SeqJour=$SeqJour.strftime("%w", strtotime($annee.'-'.$mois.'-'.$jour )); } $Nbjour=substr_count($SeqJour,$numjour); return $Nbjour; } //usage: getJour(6,10,2008); Nobre de Samedi au mois d'octobre 2008
Merci à Malaman qui m'a inspiré.
Julien
------