Imaginons, un calendrier à 3 mois.
Le premier mois fait 25 jours.
Le second mois fait 12 jours.
Le troisième mois fait 72 jours.
L'année fait donc 25 + 12 + 72 = 109 jours
Le temps 0 du calendrier est défini au "8/11/2012 à 20:18:09" soit le timstamp unix : define(TEMPS0, 1352402289)
On récupère l'instant courant grâce à time() auquel on soustrait TEMPS0;
$secondesEcouleDepuisT0 = time() - TEMPS0;
On calcule le nombre de jours écoulés depuis TEMPS0 pour que ça soit plus pratique à manipuler.
$joursEcouleDepuisT0 = ($secondesEcouleDepuisT0 - ($secondesEcouleDepuisT0 % (3600*24))) / (3600*24);
Pour récupérer l'année en cours c'est "on est l'année ". floor($joursEcouleDepuisT0 / 109);
Le but maintenant est de savoir quel mois on est.
On calcule le nombre de jours écoulés depuis le début de l'année courante.
$joursDeLAnneeCourante = $joursEcouleDepuisT0 % 109;
On pose le tableau suivant : $joursParMois = array(25, 12, 72);
Il faut produire un tableau avec les jours cumulatifs par mois.
$joursCumulParMois = array(25, 25+12, 25+12+72);
On termine par un foreach même s'il doit y avoir un moyen plus optmisé mathématiquement.
Code :
- foreach ($joursCumulParMois as $nMois => $cumul) {
- if ($joursDeLAnneeCourante < $cumul) {
- echo "On est le jour ". ($joursDeLAnneeCourante - $cumul + $joursParMois[$nMois]). " du mois ". ($nMois). "\n";
- break;
- }
- }
|
Message édité par czh le 08-11-2012 à 21:18:44