Salut!
Finalement, je t'ai fais une petite fonction....
Elle est pas tout à fait juste:
- J'ai un bug en 2000: décalage d'une semaine, pas trouvé pk
Voici comment ca fonctionne:
1) On teste la validité de semaine
2) Tableau des jours
3) Année bissextile?
4) Premier jours de l'an (si lundi: 0, mardi: 1, mercredi: 2, ... dimanche: 7)
5) n° du jour du lundi du début de la semaine $semaine (!!!)
6) On regarde quel mois ca tombre
7) On prépare les retours
Paramètres:
$from: début de la semaine
$to: fin de la semaine
--> jj/mm/aaaa
Ces 2 variables sont passées par référence
Exemple d'appel:
$from = ''; $to = '';
semaine(25, 2002, $from, $to); echo '<br>from: ' . $from; echo '<br>to: ' . $to;
|
Le code, enfin:
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; }
|
Juste pour info: C'est du bénévolat, je garantit absolument pas son fonctionnement... J'ai fais quelques tests et ca marche mais pour la suite, je n'ai pas de comptes à rendre...
Si tu as des questions, hésites pas.
@++
R@f
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
www.progforum.net: Aide en programmation!