défi algorithme date

défi algorithme date - PHP - Programmation

Marsh Posté le 01-08-2007 à 10:51:21    

salut à tous
 
voici un algorithme sur lequel je me prend la tête. il s'agit d'afficher une liste déroulante <select> avec la liste des semaines à partir de la semaine actuel jusqu'à n+1. (donc afficher 52 semaines).
chaque ligne affiche le numéro de semaine ainsi que les numéros de jour (numéro du lundi et du vendredi).
 
j'ai écris un algorithme qui fonctionne jusqu'à la semaine 42 mais à partir de la 43 un décalage se créé.
 
si quelqu'un est très à l'aise sur les dates avec php et veut bien tenter de relever le défi :-)
 
http://aug01.imgshare.us/44g.jpg
 

Code :
  1. <?php
  2.   echo '<select name="date">';
  3.   $uneSemaine = 3600*24*7;
  4.   $premierJour = mktime(0,0,0,date("m" ),date("d" )-date("w" )+1,date("Y" ));
  5.   $j = 1;
  6.   for ($i = 0; $i < 52; $i++) {
  7.     $numeroSemaine = (date("W" )+$i);
  8.     if ($numeroSemaine>52) {
  9.       $numeroSemaine = $j++;
  10.     }
  11.     $dateRegulation = $premierJour + $uneSemaine;
  12.     $dateRegulation = date("d-m-Y",mktime(0, 0, 0, date("m",$dateRegulation),date("d",$dateRegulation)-3,date("Y",$dateRegulation)));
  13.     echo '<option value="du '.date("d-m-Y",$premierJour).' au '.$dateRegulation.'">';
  14.     echo 'Semaine n°'.$numeroSemaine.' - (du '.date("d-m-Y",$premierJour).' au '.$dateRegulation.')</option>';
  15.     $premierJour = $premierJour + $uneSemaine;
  16.   }
  17.   echo '</select>';
  18. ?>


 
merci d'avance


Message édité par twisted le 01-08-2007 à 10:54:25
Reply

Marsh Posté le 01-08-2007 à 10:51:21   

Reply

Marsh Posté le 01-08-2007 à 11:24:14    

Salut,
 
Je ne savais pas que les semaines étaient séparées de 3 jours :)


---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 01-08-2007 à 11:34:53    

Quel est le sens de ta question ? les semaines ne sont pas séparées de 3 jours !
 

Code :
  1. chaque ligne affiche le numéro de semaine ainsi que les numéros de jour (numéro du lundi et du vendredi).


 
si l'on prend la première semaine sur l'image, numéro 31 :
elle débute le lundi 30 juillet pour finir le vendredi 3 août.
 
la semaine 32 démarre le lundi 6, ect...

Reply

Marsh Posté le 01-08-2007 à 12:02:39    

je ne code pas du tout en php mais j'afficherai $premierjour pour voir ce qui s'y trouve, je sens bien l'arrondi foireux quand tu y rajoute $unesemaine

Reply

Marsh Posté le 01-08-2007 à 13:17:41    

twisted a écrit :

Quel est le sens de ta question ?


Ce n'était pas une question. Bref!
 
As-tu essayé d'afficher la valeur de tes variables? L'algorithme n'a pas l'air si compliqué que ça. Je m'y attarderais dessus si j'avais un peu de temps devant moi mais ce n'est pas le cas. Je te conseil de revoir ton algo et la valeur de tes variables. Tu as surement dû oublié quelque chose quelque part.


---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 01-08-2007 à 14:10:08    

Ca serait une erreur de penser que la semaine n°1 commence forcément un lundi...
http://fr.wikipedia.org/wiki/Num%C [...] s_semaines
 
De même, ce serait une erreur de penser qu'une semaine a la même durée (en secondes)...Ben oui, dans notre calendrier, y'a 2 changement d'heure (donc, y'a une semaine qu''à 1h de plus et une autre qui en a 1 de moins). Y'a aussi le coup des années bissextiles. Commence donc déjà par récupéré le n° du 1er jour de l'année et le n° de la semaine du dernier jour de l'année...


Message édité par rufo le 01-08-2007 à 14:13:27
Reply

Sujets relatifs:

Leave a Replay

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