<?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;
}

?>