PHP, deux petits calculs sur les dates

calendriers.jpg Mes dernières créations imposaient des petits calculs sur les dates.

Afin de les retrouver, les voici.

La date du lundi.

On part d'une date, et il faut trouver le début de la semaine (pratique quand on veut faire un calendrier qui s'affiche à la semaine)

Le plus simple est d'utiliser la function date('w') qui retourne le numéro correspondant au jour de la semaine.

  1. function getLundiPrecedent($TimeStampActuel){
  2. if (date('w',$TimeStampActuel)=='0'){$joursAsoustraire=6;} else {$joursAsoustraire=date('w',$TimeStampActuel) -1;}
  3. return mktime (0, 0, 0, date("n",$TimeStampActuel) , date("j", $TimeStampActuel) - $joursAsoustraire, date("Y", $TimeStampActuel));
  4. }

La date d'un jour (lundi, mardi, mercredi...) de la semaine x semaines avant:

La semaine de commandes de repas doivent être faites (au hazar) le mercredi de la semaine précédente. Pour chaque repas le calcul de la date de limite de commande:

  1. function getDateJourDeLaSemaineXsemainesAvant($ladate, $numeroDuJour,$nbeSemainesAsoustraire){
  2. /*
  3.   * Retourne le timestamp du jour $numeroDuJour (0: dimanche, 1 lundi etc...)
  4.   * $nbeSemainesAsoustraire semaines avant $ladate
  5.   */
  6.  
  7. $leJourDuRepasDansLaSemaine=date('w',$ladate);
  8. $nombreDeJoursASoustraire= $leJourDuRepasDansLaSemaine - $numeroDuJour + ($nbeSemainesAsoustraire * 7);
  9. return mktime(0, 0, 0,date("n",$ladate),date("j",$ladate)-$nombreDeJoursASoustraire,date("Y",$ladate));
  10. }

Commentaires

1. Le mardi, juillet 24 2012, 08:03 par zigazou

Un petit bémol sur la conception : tu as intégré dans ta deuxième fonction une notion qui n’a aucune raison d’être : le repas. C’est une notion propre à ton application et sans rapport avec ce que fait la fonction.

Et pour parfaire les commentaires du code, 2 ou 3 exemples d’appels de fonction et leurs résultats seraient les bienvenues car c’est le genre de fonction sur lesquelles tu reviens quelques années plus tard et tu te demandes ce qu’elles fonction réellement.

À part ça, il serait peut-être temps de passer aux objets DateTime, DateInterval etc., non ? ;-) http://fr.php.net/manual/fr/book.da...

Voilà, j’ai fait mon chieur, je peux retourner à ma petite vie :o)

2. Le mercredi, juillet 25 2012, 10:59 par gnieark

Hello zigazou, la notion de repas, était un exemple d'application de cette function.

Pour les objets dateTime, je m'abstiens, car je file ce programme aussi à une clinique qui l'héberge sur un php 5.2 grrrrrrrr.

J'éditerai le billet entre midi et deux pour mettre des exemples.

Et pour ton dernier point, c'est toujours un plaisir de voir un chieur de qualité passer dans les commentaires de mon blog.

Page top