Maison  >  Article  >  développement back-end  >  Comment puis-je extraire les jours de la semaine dans un numéro de semaine donné en PHP, en commençant par lundi ?

Comment puis-je extraire les jours de la semaine dans un numéro de semaine donné en PHP, en commençant par lundi ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 06:10:30373parcourir

How can I extract the days of the week within a given week number in PHP, starting with Monday?

Calcul des jours de la semaine à partir d'un numéro de semaine

Ce problème vise à extraire les jours de la semaine au sein d'un numéro de semaine donné, plus précisément à partir de lundi.

Solution PHP

Le code PHP suivant peut être utilisé pour réaliser ce calcul :

<code class="php">$week_number = 40;
$year = 2008;
for ($day = 1; $day <= 7; $day++) {
    printf('%s\n', date('m/d/Y', strtotime($year . "W" . $week_number . $day)));
}

Ce script produit ce qui suit sortie pour la semaine 40 :

10/06/2008
10/07/2008
10/08/2008
10/09/2008
10/10/2008
10/11/2008
10/12/2008

Solution PHP alternative pour extraire les dates en une semaine

Vous trouverez ci-dessous une solution adaptée qui fonctionne légèrement différemment :

<code class="php">function week_from_monday($date) {
    list($day, $month, $year) = explode('-', $date);

    $wkday = date('l', mktime('0', '0', '0', $month, $day, $year));

    switch ($wkday) {
        case 'Monday': $numDaysToMon = 0; break;
        case 'Tuesday': $numDaysToMon = 1; break;
        case 'Wednesday': $numDaysToMon = 2; break;
        case 'Thursday': $numDaysToMon = 3; break;
        case 'Friday': $numDaysToMon = 4; break;
        case 'Saturday': $numDaysToMon = 5; break;
        case 'Sunday': $numDaysToMon = 6; break;
    }

    $monday = mktime('0', '0', '0', $month, $day - $numDaysToMon, $year);

    $seconds_in_a_day = 86400;

    for ($i = 0; $i < 7; $i++) {
        $dates[$i] = date('Y-m-d', $monday + ($seconds_in_a_day * $i));
    }

    return $dates;
}

Cette fonction accepte une chaîne de date au format 'JJ-MM-AAAA' et la convertit en un tableau de dates représentant les jours de la semaine à partir du lundi. Par exemple, en utilisant la date « 07-10-2008 », vous obtenez le tableau suivant :

Array
(
    [0] => 2008-10-06
    [1] => 2008-10-07
    [2] => 2008-10-08
    [3] => 2008-10-09
    [4] => 2008-10-10
    [5] => 2008-10-11
    [6] => 2008-10-12
)</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn