Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question$from = ''; $to = ''; semaine(25, 2002, $from, $to); echo ' from: ' . $from; echo ' to: ' . $to;
function semaine($semaine, $an, &$from, &$to) { if($semaine > 55 || $semaine < 1) return; // tableau de jours $jours = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); if(($an % 4 == 0 && $an % 100 != 0) || $an % 400 == 0) $jours[1] = 29; // premier jour de l'an $an $first = date('D', mktime(0, 0, 0, 1, 1, $an)); switch($first) { case 'Mon': $first = 0; break; case 'Tue': $first = 1; break; case 'Wed': $first = 2; break; case 'Thu': $first = 3; break; case 'Fri': $first = 4; break; case 'Sat': $first = 5; break; case 'Sun': $first = 6; break; } if($semaine == 1) { $from = '01/01/' . $an; $to = '0' . (7 - $first) . '/01/' . $an; return; } // n° du jour (pour le lundi de le semaine $semaine) $nb_jours = (($semaine - 1) * 7) + 1 - $first; // mois $i = 0; while($nb_jours > $jours[$i]) $nb_jours -= $jours[$i++]; // sortie $from = ($nb_jours < 10 ? '0' . $nb_jours : $nb_jours) . '/' . ( ($i + 1) < 10 ? '0' . ($i + 1) : ($i + 1) ) . '/' . $an; if(($nb_jours + 6) > 31) $to = '31/12/' . $an; else $to = ( ($nb_jours + 6) < 10 ? '0' . ($nb_jours + 6) : ($nb_jours + 6) ) . '/' . ( ($i + 1) < 10 ? '0' . ($i + 1) : ($i + 1) ) . '/' . $an; }
if($semaine == 1) { $from = '01/01/' . $an; $to = '0' . (7 - $first) . '/01/' . $an; return; }
if($semaine == 1) { if($first != 1) $from = (32 - $first) . '/12/' . ($an - 1); else $from = '01/01/' . $an; $to = '0' . (7 - $first) . '/01/' . $an; return; }