Date du 1er jour d'une semaine donnée

Date du 1er jour d'une semaine donnée - PHP - Programmation

Marsh Posté le 29-10-2006 à 21:18:52    

Bonjour,
 
Pour un script je cherche à convertir un numero de semaine en date du premier jour de cette semaine.
 
J'ai deja trouver une solution mais elle n'est pas super pratique... car le jour de la premier semaine de l'année est different pour chaque année!
 
Voici mon code:

Code :
  1. $timestamp = strtotime('1 January 2006');
  2. $semaine = "20 week";
  3. date('d M',strtotime($semaine,$timestamp))


 
Avec ceci j'obtiens le premier jour de la semaine 19 (bon c'est pas bien grave mais je comprends pas trop)
 
Voyez vous une meilleur solution?
 
Merci par avance

Reply

Marsh Posté le 29-10-2006 à 21:18:52   

Reply

Marsh Posté le 30-10-2006 à 09:27:32    

Citation :

W Numéro de semaine dans l'année ISO-8601, les semaines commencent le lundi (ajouté en PHP 4.1.0) Exemple : 42 (la 42ème semaine de l'année)


 
http://fr2.php.net/manual/fr/function.date.php


Message édité par misterpinguin le 30-10-2006 à 09:28:24
Reply

Marsh Posté le 30-10-2006 à 10:17:22    

Merci pour ce post completement inutile.

Reply

Marsh Posté le 30-10-2006 à 13:17:59    

Popop56 a écrit :


Avec ceci j'obtiens le premier jour de la semaine 19 (bon c'est pas bien grave mais je comprends pas trop)


 
Ah, je trouve le 21 mai qui est effectivement 20 semaines de plus que le 1er janvier.
 
 
Sinon il y a une fonction dans les commentaires sur php.net:

Code :
  1. // ******************************************************
  2. // Function that returns the dates for each day in a week
  3. // ******************************************************
  4. function week_dates($week,$year) {
  5.    $week_dates = array();
  6.    // Get timestamp of first week of the year
  7.    $first_day = mktime(12,0,0,1,1,$year);
  8.    $first_week = date("W",$first_day);
  9.    if ($first_week > 1) {
  10.        $first_day = strtotime("+1 week",$first_day); // skip to next if year does not begin with week 1
  11.    }
  12.    // Get timestamp of the week
  13.    $timestamp = strtotime("+$week week",$first_day);
  14.    // Adjust to Monday of that week
  15.    $what_day = date("w",$timestamp); // I wanted to do "N" but only version 4.3.9 is installed :-(
  16.    if ($what_day==0) {
  17.        // actually Sunday, last day of the week. FIX;
  18.        $timestamp = strtotime("-6 days",$timestamp);
  19.    } elseif ($what_day > 1) {
  20.        $what_day--;
  21.        $timestamp = strtotime("-$what_day days",$timestamp);
  22.    }
  23.    $week_dates[1] = date("Y-m-d",$timestamp); // Monday
  24.    $week_dates[2] = date("Y-m-d",strtotime("+1 day",$timestamp)); // Tuesday
  25.    $week_dates[3] = date("Y-m-d",strtotime("+2 day",$timestamp)); // Wednesday
  26.    $week_dates[4] = date("Y-m-d",strtotime("+3 day",$timestamp)); // Thursday
  27.    $week_dates[5] = date("Y-m-d",strtotime("+4 day",$timestamp)); // Friday
  28.    $week_dates[6] = date("Y-m-d",strtotime("+5 day",$timestamp)); // Saturday
  29.    $week_dates[7] = date("Y-m-d",strtotime("+6 day",$timestamp)); // Sunday
  30.    return($week_dates);
  31. }


 
J'ai rapidement testé, la première semaine de l'année est la 0 si j'ai bien compris...;


Message édité par pascal_ le 30-10-2006 à 13:20:30
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed