Programme planning (dates) [Résolu/Fermé]

Signaler
Messages postés
77
Date d'inscription
lundi 16 septembre 2013
Statut
Membre
Dernière intervention
11 mars 2020
-
Messages postés
77
Date d'inscription
lundi 16 septembre 2013
Statut
Membre
Dernière intervention
11 mars 2020
-
Bonjour à tous.
Après moult heures à chercher le pourquoi du comment de mon problème, je me résous à demander de l'aide, parfois un œil extérieur voit mieux...

Je fais un planning.
J'ai une première page pour choisir les bornes de mon planning (de mois x à mois y)
la page suivante génère toutes les dates entre ces deux bornes.
Tout marche à merveille et dans tous les cas, SAUF s'il y a le mois d'octobre (10), auquel cas j'ai 2x le 29...

J'ai tout re-testé, pas moyen d'en sortir...

Voici le script qui crée les bornes :

// calcul dernier jour
      $datepremierjour=$annee2."-".$mois2."-01";
      list($annee, $mois, $jour) = explode('-',$datepremierjour);
      //recuperation du premier du mois suivant
      $date_mois_suivant = date("Y/m/d", mktime(0,0,0,$mois2+1,$jour,$annee));
      list($annee, $mois2, $jour) = explode('/',$date_mois_suivant);
      //recuperation de la veille; donc le dernier du jour du mois précédent
      $end = date("Y-m-d", mktime(0,0,0,$mois2,$jour-1,$annee));
//premier jour
  $start=$annee1."-".$mois1."-01";



Voici la fonction qui crée le tableau des dates :
function eachDate ($start, $end) {
       $DateDepart  =   strtotime($start);
        $DateFin    =   strtotime($end);
        $NombreSecondes = $DateFin - $DateDepart;
        $NombreJours = $NombreSecondes / (3600*24);
        $ToutesDates = array();
        for($i = 0; $i < $NombreJours+1; $i++) {
            $date = date('d', $DateDepart+((3600*24)*$i));
            array_push($ToutesDates, $date);
        }
        return $ToutesDates;
    }
    foreach(eachDate($start, $end) as $date) {
   echo "<th>".$date."</th>\n";


1 réponse

Messages postés
12867
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 octobre 2020
717
bonsoir,
chez moi, ton code fonctionne parfaitement.
moi j'essaierais ceci:
date = date('d', $DateDepart+((3600*24)*$i)+3600);
Messages postés
77
Date d'inscription
lundi 16 septembre 2013
Statut
Membre
Dernière intervention
11 mars 2020
1
En effet...
J'en étais à me dire que ça devait avoir à faire avec l'heure d'hiver.
Vu ta solution (qui marche parfaitement), c'était bien ça.
Ajouter une heure permet de ne pas retomber 2 fois sur le même jour..
Merci mille fois, tu m'as fait gagner un temps précieux.