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.
By accepting you will be accessing a service provided by a third-party external to https://www.pulsar-agency.com/
Commentaires 4
Guest - Eric
le mardi 20 novembre 2012 18:50
Ca fonctionne très bien tel quel. Bravo et merci Raphaelle !
Guest - Today32
le jeudi 17 janvier 2013 15:17
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)
Guest - Falkao
le lundi 21 janvier 2013 09:27
Merci Raphaelle! C'est très utile en effet et c'est exactement ce que j'étais en train de chercher
Guest - camille
le mercredi 27 janvier 2016 16:43
Merci Raph ! :-)