php-date

Trouver les dates de début et de fin de semaine

Vous souhaitez trouver les dates de début et de fin d’une semaine ? Voici la solution :

/**
 * Retourne les dates de début et fin de semaine (Lundi et Dimanche)
 * @param numeric $annee : numéro de l'année
 * @param numeric $semaine : numéro de la semaine
 * @param string $format : format des dates pour le retour
 */
function getWeekStartAndEnd($annee="", $semaine="", $format = 'Y-m-d') {
    $annee = (isset($annee) && !empty($annee)) ? $annee : date("Y");
    $semaine = (isset($semaine) && !empty($semaine)) ? $semaine : date("W");

    $dateObjet = new DateTime();
    $dateObjet->setISOdate($annee, $semaine);
    $dateDebut = $dateObjet->format($format);
    date_modify($dateObjet , '+6 day');
    $dateFin = $dateObjet->format($format);

    return array(
        "dateDebut" => $dateDebut,
        "dateFin" => $dateFin
    );
}

Quelques exemples d’appel de cette fonction :

getWeekStartAndEnd(date("Y"), date"W")); // Retourne le lundi et dimanche de la semaine courante au format MySql
getWeekStartAndEnd(date("Y"), date("W"), "d/m/Y"); // Retourne le lundi et dimanche de la semaine courante au format français
getWeekStartAndEnd(2016, 1); // Retourne les dates de la première semaine de Janvier 2016 au format MySql : 2016-01-04 et 2016-01-10
getWeekStartAndEnd(2016, 1, "d/m/Y"); // Retourne les dates de la première semaine de Janvier 2016 au format français : 04/01/2016 et 10/01/2016