La règle de base est que la 1ère semaine ne commence pas le 1er Janvier, mais le 1er jour de début de semaine de l’année. Dans les faits, il existe deux possibilités : les américains considèrent que le 1er jour de la semaine est le dimanche tandis que les français considèrent que c’est le lundi. Ainsi, si le 1er janvier est un mardi, vous êtes toujours en semaine 52 de l’année précédente et la 1ère semaine ne commencera que le premier lundi suivant (cad le 07 Janvier dans le cas présent).
Dans le script proposé ici, on peut fonctionner à la française ou à l’américaine en changeant la variable $pivot. Le script vous renvoit le numéro de semaine exacte en lui fournissant une date date du type JJ/MM/AAAA. Si cette date est incorrecte, le script renvoi 0. Si la date est située avant le 1er lundi (ou dimanche) de l’année, le script renvoit -52 pour vous signifier que vous êtes dans la dernière semaine de l’année précédente.
<?php
// ------------------------------------------------------------------------- //
// Numéro de semaine. //
// ------------------------------------------------------------------------- //
// Auteur: Olivier Desmars //
// Email: wizdom@voila.fr //
// Web: //
// ------------------------------------------------------------------------- //
function numero_semaine ( $date_param )
{
//-------------------------------------------------------------------------------
// Fonction qui renvoi le numéro de semaine de la date
// passée en paramètre sous la forme "JJ/MM/AAAA"
// $pivot = "Sunday" si le 1er jour de la semaine est le dimanche (anglo-saxons)
// $pivot = "Monday" si le 1er jour de la semaine est le lundi (France)
//
// Renvoi 0 si la date passée en paramètre n'est pas valide
// Renvoi -52 si la date passée appartient à la semaine 52 de l'année précédente
//-------------------------------------------------------------------------------
$pivot = "Monday";
//---------------------------------------------------
// Vérifie la validité de la date passé en paramètre
//---------------------------------------------------
$day = (integer) substr($date_param,0,2);
$month = (integer) substr($date_param,3,2);
$year = (integer) substr($date_param,6,4);
//---------------------------------------------------
// Vérifie la validité de la date passée en paramètre
//---------------------------------------------------
if (!checkdate($month,$day,$year)) return 0;
//-----------------------------------------------------------
// Change le format de JJ/MM/AAAA en AAAAMMJJ pour permettre
// la comparaison des dates sous forme de caractère
//-----------------------------------------------------------
$date_param = substr($date_param,6,4).substr($date_param,3,2).substr($date_param,0,2);
//----------------------------------------------------------
// Recherche le 1er jour de la 1ère semaine de l'année $year
//----------------------------------------------------------
$cnt = 1; // on part du 1er janvier de l'année
while ( date("l", mktime(0,0,0,1,$cnt,$year)) <> $pivot)
{
// Rajoute un jour tant qu'on a pas trouvé
// le 1er jour de la 1ère semaine
$cnt += 1;
}
$cnt -= 1; // se positionne la veille ce jour clé
$week = -52; // nous sommes donc le dernier jour de
// la dernière semaine de l'an passé
$current_day = mktime(0,0,0,1,$cnt,$year);
while ( date("Ymd", $current_day) < $date_param )
{
// incremente le numéro de semaine
if ($week == -52) { $week = 1 ; }
else { $week += 1 ; }
// Ajoute une semaine à la date en cours
$current_day += 60*60*24*7 ;
}
// Renvois le numero de la semaine trouvé
return $week;
}
?>
[url=http://www.drugs.com/newdrugs/fda-approves-kinrix-new-combination-vaccine-children-1035.html]PHILADELPHIA, June 24, 2008 /PRNewswire-FirstCall/[/url] — GlaxoSmithKline announced today that the U.S. eats and numb provision (FDA) has approved [url=http://forums.rugbyrama.eurosport.fr/member.php ?u=27255]achat cialis[/url] [Diphtheria and Tetanus Toxoids and Acellular Pertussis Adsorbed and Inactivated Poliovirus Vaccine], the basic coalition vaccine to put on the market guardianship against diphtheria, tetanus, pertussis and polio diseases in one shot.
"Children 4 to 6 years-old can notified of five or more vaccinations in a [url=http://forums.rugbyrama.eurosport.fr/member.php ?u=27255]acheter du cialis[/url] free go, which can be stressful for parents and vaccinators," said William P. Hitchcock, MD, mix [url=http://www.kinrix.com/]Kinrix[/url] equip of Medicine. "By reducing the platoon of shots acknowledged in one go, coalition vaccines like Kinrix may borrow it easier for kids to touch persuasion vaccination requirements and CDC recommendations."