Programme planning (dates)

Résolu/Fermé
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 - Modifié le 17 oct. 2017 à 17:03
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 - 17 oct. 2017 à 21:27
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";


A voir également:

1 réponse

yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
Modifié le 17 oct. 2017 à 20:35
bonsoir,
chez moi, ton code fonctionne parfaitement.
moi j'essaierais ceci:
date = date('d', $DateDepart+((3600*24)*$i)+3600);
0
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 1
17 oct. 2017 à 21:27
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.
0