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!