Eléphant du PHP |
422 Messages
27 mars 2008, 21:56
Le mois de mars 2011 aura 4 dimanches: les 3 mars, 10 mars, 17 mars, 24mars, 31 mars.
3, 10, 17, 24 et 31 : ça fait 5 dimanches et pas 4. Et ce sera en 2013 et pas en 2011
Penser à la fonction strtotime() très pratique et trop souvent oubliée
$debutmois = strtotime("1 march 2011"); //1er mars 2011
if (date("w", $debutmois) == 0) {
$dim1 = $debutmois; //Si le 1er est un dimanche
} else {
$dim1 = strtotime("first sunday", $debutmois); //1er dimanche après le 1er du mois
}
$dim2 = strtotime("next sunday", $debutmois);
$dim3 = strtotime("third sunday", $debutmois);
$dim4 = strtotime("fourth sunday", $debutmois);
$dim5 = strtotime("fifth sunday", $debutmois);
echo date("l d/m/y", $debutmois)."<br>";
echo "--------<br>";
echo date("l d/m/y", $dim1)."<br>";
echo date("l d/m/y", $dim2)."<br>";
echo date("l d/m/y", $dim3)."<br>";
echo date("l d/m/y", $dim4)."<br>";
if (date("n", $dim4) == date("n", $dim5)) {
echo date("l d/m/y", $dim5)."<br>"; //Affichage si le 5e dimanche est dans le même mois que le 4e dimanche
}
(attention, il n'y a pas de "second sunday", il faut utiliser "next" pour éviter les ambiguités avec les secondes)
il ne reste plus qu'à calculer les suivants en vérifiant que tu ne passes pas sur le mois suivant