Maison >développement back-end >tutoriel php >Comment calculer les jours d'une semaine en PHP à partir d'un numéro de semaine ou d'une date précise ?

Comment calculer les jours d'une semaine en PHP à partir d'un numéro de semaine ou d'une date précise ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 01:41:30196parcourir

How to Calculate the Days of a Week in PHP Given a Week Number or a Specific Date?

Calcul des jours d'une semaine

Lorsqu'on nous donne un numéro de semaine, tel que celui obtenu à partir de la date -u %W, nous devrons peut-être calculer les jours de cette semaine, à partir du lundi. Cela nous permet de générer une liste spécifique de dates au cours de cette semaine.

Implémentation PHP

En PHP, nous pouvons utiliser une boucle pour générer les dates :

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

Sortie :

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

Obtention de dates à partir d'une date donnée

Une approche alternative consiste à obtenir les dates d'une semaine spécifique en fonction d'un jour spécifique. Par exemple, pour obtenir les dates de la semaine contenant le 7 octobre 2008 :

<code class="php">function week_from_monday($date) {
    // Assuming $date is in format DD-MM-YYYY
    list($day, $month, $year) = explode("-", $date);

    // Get the weekday of the given 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;
    }

    // Timestamp of the Monday for that week
    $monday = mktime(0, 0, 0, $month, $day - $numDaysToMon, $year);

    $seconds_in_a_day = 86400;

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

    return $dates;
}

Sortie :

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