Forum Clubic

[PHP] Fonction N° semaine

Bonjour,

Juste pour savoir, à part la commande strftime, existe-t-il un autre moyen pour récupérer le N° de la semaine pour une date donnée ??

En fait, avec ce code :

echo "Semaine = ",strftime("%W",mktime(0,0,0,12,31,2004));

il me retourne 52 au lieu de 53
de même, pour le 01/01/2006, il me retourne 0 au lieu de 52 (bizarre comme N° de demaine le 0 non ??)

Donc à moins que je me gourre sur l’utilisation de la cmde ?? …
qqun ??

ya pas que 52 semaines dans l’année?

Calendrier gregorien

Par contre pour la semaine 0 c chelou

http://www.nexen.net/docs/php/annotee/function.strftime.php

%V : le numéro de semaine comme défini dans l’ISO 8601:1988, sous forme décimale, de 01 à 53. La semaine 1 est la première semaine qui a plus de 4 jours dans l’année courante, et dont Lundi est le premier jour. (Utilisez %G ou %g pour les éléments de l’année qui correspondent au numéro de la semaine pour le timestamp donné.)

%W : numéro de semaine dans l’année, en considérant le premier lundi de l’année comme le premier jour de la première semaine

Merci pour l’aide !!
Le bouquin que j’avais ne faisais nulle part mention du %V
Néanmoins, ce %V ne fonctionne pas sur les systèmes Windows donc faudra essayer autre chose.
ce petit script trouvé sur nexen n’est pas tout à fait exact nottament pour le 31/12/2001 où il affiche 53 au lieu de 52

 function ISOWeek($y , $m , $d){
 $week=strftime("%W", mktime(0, 0, 0, $m, $d, $y));
  $dow0101=getdate(mktime(0, 0, 0, 1, 1, $y));
  if ($dow0101["wday"]>1 &&
  $dow0101["wday"]<5)
  $week++;
  elseif ($week==0)
  $week=53;
  return(substr("00" . $week, -2));
}

J’essayerai de l’adapter !!

A+

vous vous prenez ben la tete :slight_smile:

echo date('W',strtotime('2005/12/31'));

fini

ouais impec !!

Mais j’ai un doute sur le 31/12/2001.
Pour vous il appartient à quelle semaine ??
J’ai un calendrier devant les yeux et pour moi il ferait parti de la semaine 52 non ??
Merci en tout cas !!

semaine 1, ca tombe un lundi en plus
echo date(‘W’,strtotime(‘2001-01-01’)); (ou avec /)
date au format english 'ttention hein
le 1er janvier signifie pas que t’es en semaine 1, si la semaine a commencé fin décembre, ce sera affiché semaine 1 pour le dimanche ou lundi suivant

Ok merci à tous :jap:

Trouvé dans Wikipedia, d’après la norme ISO 8601:2004 (que vous pouvez vous procurer ici : http://www.iso.org/iso/en/CatalogueDetailP…&showrevision=y :[quote=""]
The first week of a year is the first week which includes at least four days in the new year (again using the convention that Monday is the first day of the week). It follows that the first week of the year is always the week which includes the first Thursday of January, and also the week which includes January 4. This means that week 01 may include days from the previous year, or that week 52 or 53 may include days from the next year. For example, 2004-01-01 occurs on a Thursday. This means that 2004-W01 consists of Monday, 2003-12-29 through Sunday, 2004-01-04. 2005-01-01 occurs on a Saturday, meaning that 2004-W53 is 2004-12-27 through 2005-01-02, and 2005-W01 starts on 2005-01-03.
[/quote]
Profitez-en pour allez regarder ça aussi : http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm