Page 1 sur 1

interrogation sur des dates

Posté : 21 nov. 2006, 17:52
par Invité
Bonjour,

j'aimerai savoir de quelle manière savoir pour un mois donnée le nombre de lundi, mardi, mercredi..... il y a. De plus de quelle manière gérer les jours férié ?

Merci d'avance

Posté : 21 nov. 2006, 18:19
par DocType
En exploitant les possibilités de la fonction date() :wink:

Posté : 21 nov. 2006, 18:51
par mere-teresa
Pour les jours fériés, il faudra te procurer la liste selon le pays.
Sinon, date('t') te donne le nb de jours dans le mois.

Posté : 22 nov. 2006, 10:18
par Invité
d'acord merci.
en faite pour le nombre de jour il faut que je fasse une boucle sur tout le mois et incrementé une variable chaque fois que je tombe sur le jour en question ?
merci

Posté : 22 nov. 2006, 10:40
par zeus
...
Sinon, date('t') te donne le nb de jours dans le mois.
Prend bien le temps de lire les réponses qu'on te donne ;)

Posté : 22 nov. 2006, 12:40
par Ripat
d'acord merci.
en faite pour le nombre de jour il faut que je fasse une boucle sur tout le mois et incrementé une variable chaque fois que je tombe sur le jour en question ?
merci
Oui.

Je ne vois pas d'autre solution que de boucler sur les jours d'un mois.

date('w', $timestamp) te retournera le numéro du jour de la semaine.

Posté : 22 nov. 2006, 15:01
par Ryle
Je ne vois pas d'autre solution que de boucler sur les jours d'un mois.
Une autre solution pour ne pas à avoir à tester chaque jour pourrait être de regarder quel jour de la semaine est le premier jour du mois, et d'utiliser le nombre de jour dans le mois pour savoir combien de fois on va le retrouver.

Y a probablement plus simple, mais la première chose qui me vient serait celle ci :

nov 2006 : 30 jours
premier jour => mercredi

mercredi : ceil(30/7) = 5
jeudi : ceil(29/7) = 5
vendredi : ceil(28/7) = 4
...
mardi : ceil(24/7) = 4

Si ça vous inspire... :)

Posté : 22 nov. 2006, 15:27
par Invité
merci bcp toutes vos reponses vont bcp me servir

Posté : 22 nov. 2006, 16:52
par Ripat
Plus généraliste, ceci calculera le nombre de chaque jour de la semaine entre deux dates arbitraires. Attention au problème de changement d'heure. Pas testé sur ce point.
$joursSem = array(
  array('Di', 0), array('Lu', 0), array('Ma', 0), array('Me',0),
  array('Je', 0), array('Ve', 0), array('Sa', 0)
);

// mktime (heure, min, sec, mois, jour, année)
$dateDebut = mktime(0, 0, 0, 3, 1, 2006);
$dateFin   = mktime(0, 0, 0, 11, 31, 2006);

do {
  $joursSem[date('w', $dateDebut)][1]++;
  $dateDebut += 86400;
} while ($dateDebut < $dateFin);


echo '<pre>'; print_r($joursSem);  echo '</pre>';

Posté : 22 nov. 2006, 17:10
par Ajoloca
Bonjour,

Je ne pense pas que le chagement d'heure joue.

Tes valeurs sont à 00h00 et les chagements on lieu 02h00 -> 03h00 ou bien 03h00 -> 02h00, donc dans la même jounée.

Posté : 22 nov. 2006, 17:49
par Ripat
Tu as sans doute raison mais je suis méfiant sur le changement d'heure.

Exemple, on pourrait calculer le nombre de jours séparant deux date comme ceci:
$dateDebut = mktime(0, 0, 0, 3, 24, 2006);
$dateFin   = mktime(0, 0, 0, 3, 27, 2006);
echo ($dateFin - $dateDebut) / (24 * 60 * 60), '<br />';
Surprise! Retourne 2.95833333333

La bonne méthode maintenant avec l'argument DST de mktime()
// mktime (heure, min, sec, mois, jour, année, dst)
$dateDebut = mktime(0, 0, 0, 3, 24, 2006, 1);
$dateFin   = mktime(0, 0, 0, 3, 27, 2006, 1);
echo ($dateFin - $dateDebut) / (24 * 60 * 60), '<br />';
:wink: