<?php
// ------------------------------------------------------------------------- //
// Cette fonction retourne le numéro de la semaine dans l'année, pour une //
// date donnée. //
// ------------------------------------------------------------------------- //
// Auteur: Olivier Lahaye //
// Email: lahaye.o@voila.fr //
// Web: //
// ------------------------------------------------------------------------- //
function donneMois($date) {
return substr($date,3,2);
}
function donneJour($date) {
return substr($date,0,2);
}
function donneAnnee($date) {
return substr($date,6,4);
}
function donneTimeStamp($date) {
return mktime(0,0,0,donneMois($date),donneJour($date),donneAnnee($date));
}
function semaine($date) {
// Si le premier jour de l'année est un Lundi, alors on retourne 1.
if (date("w",donneTimeStamp("01/01/" . donneAnnee($date))) == 1){
return 1;
}
$n = 0;
do {
$numJour=date("w",donneTimeStamp($n ."/01/" . donneAnnee($date)))+1;
$n++;
} while($numJour!=1);
// Dans la variable $n, on a la date de la premiere semaine complete
// Si la premiere semaine ne commence pas un Lundi, alors les jours précédents
// appartiennent à la derniere semaine de l'année précédente (52)
if ((donneJour($date) < $n) && (donneMois($date) == "01")){
return 52;
}
$nbsemaine = 0;
// On compte le nombre de semaine avant d'arriver dans celle qui contient le
// numéro du jour de la date recherché
for ($a = (date("z",donneTimeStamp($date))+1); $a > $numJour; $numJour += 7){
$nbsemaine++;
}
return $nbsemaine;
}
?>