Newsroom
Une fonction très pratique nous est donnée dans les commentaires de la page PHP.net sur la fonction date à cette adresse: http://fr2.php.net/manual/fr/function.date.php qui permet de récupérer la date du début d'une semaine à partir du numéro de la semaine et de l'année.
(On ne le repère pas toujours aisément car elle est dans les commenatires.)
En modifiant un peu cette fonction on récupère très facilement les dates du lundi au vendredi à partir des numéros de semaine (et de l'année):
function get_lundi_vendredi_from_week($week,$year,$format="d/m/Y") {
$firstDayInYear=date("N",mktime(0,0,0,1,1,$year));
if ($firstDayInYear<5)
$shift=-($firstDayInYear-1)*86400;
else
$shift=(8-$firstDayInYear)*86400;
if ($week>1) $weekInSeconds=($week-1)*604800; else $weekInSeconds=0;
$timestamp=mktime(0,0,0,1,1,$year)+$weekInSeconds+$shift;
$timestamp_vendredi=mktime(0,0,0,1,5,$year)+$weekInSeconds+$shift;
return array("Lundi " . date($format,$timestamp),"Vendredi " . date($format,$timestamp_vendredi));
}
$debut_fin_semaine = get_lundi_vendredi_from_week(5, 2012);
echo $debut_fin_semaine[0] . " - " . $debut_fin_semaine [1];
//affichera Lundi 30/01/2012 - Vendredi 03/02/2012
Voilà! Il m'a paru utile de faire ce post car j'ai cherché pendant un moment avant de trouver cette fonction, et j'étais tombé sur différents articles dont les solutions ne marchaient pas.
Commentaires 4
Ca fonctionne très bien tel quel. Bravo et merci Raphaelle !
Merci.
J'avais une fonction qui marchait bien pour 2012 mais incorrect pour 2013.
(strtotime("+$num_week weeks", $begin) et $offset = strtotime("last monday", $offset)
Merci Raphaelle! C'est très utile en effet et c'est exactement ce que j'étais en train de chercher
Merci Raph ! :-)