<?php //activation des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); function debug($var,$title=""){ echo "<br><b>".$title."</b>"; echo "<pre>"; print_r($var); echo "</pre>"; } $date1 = new DateTime('2018-01-08'); debug($date1,"date1");; $date2 = new DateTime('2018-11-05'); debug($date2,"date2"); $mois = array(); $mois[] = $date1->format('m'); while($date1 <= $date2){ $date1->add(new DateInterval("P1M")); $mois[] = $date1->format('m'); } debug($mois,'Liste des mois'); ?>
date1
DateTime Object
(
[date] => 2018-01-08 00:00:00
[timezone_type] => 3
[timezone] => UTC
)
date2
DateTime Object
(
[date] => 2018-11-05 00:00:00
[timezone_type] => 3
[timezone] => UTC
)
Liste des mois
Array
(
[0] => 01
[1] => 02
[2] => 03
[3] => 04
[4] => 05
[5] => 06
[6] => 07
[7] => 08
[8] => 09
[9] => 10
[10] => 11
)
debug($mois,'Liste des mois');donne :
echo $date_entree = $row_LOC["date_entree"]; $today = date("Y-m-d"); function debug($var,$title=""){ echo "<br><b>".$title."</b>"; echo "<pre>"; print_r($var); echo "</pre>"; } $date1 = new DateTime($date_entree);//date_entree vaut 2018-09-30 //debug($date1,"date1");; $date2 = new DateTime($today);//today vaut 2018-02-03 //debug($date2,"date2"); $mois = array(); $mois[] = $date1->format('m'); while($date1 <= $date2){ $date1->add(new DateInterval("P1M")); $mois[] = $date1->format('m'); } debug($mois,'Liste des mois'); for($i=0, $size = count($mois); $i < $size; $i++): echo $mois[$i].'<br>'; endfor;
<?php //activation des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); function debug($var,$title=""){ echo "<br><b>".$title."</b>"; echo "<pre>"; print_r($var); echo "</pre>"; } $date1 = new DateTime('2017-07-28'); //debug($date1,"date1"); $date2 = new DateTime('2018-11-05'); //debug($date2,"date2"); $mois = array(); $mois[] = $date1->format('Y-m'); while($date1 <= $date2){ $date1->add(new DateInterval("P1M")); $mois[] = $date1->format('Y-m'); } debug($mois,'Liste des mois'); ?>
$date1 = new DateTime('2017-07-28');depasse 28 c'est à dire quand je met
$date1 = new DateTime('2017-07-29');ou
$date1 = new DateTime('2017-07-30);
$date1 = new DateTime('2017-07-28');
$date1 = new DateTime('2017-07-29');
<?php //-------------------------------------------------------------// // FONCTIONS //-------------------------------------------------------------// /** * Fonction de debug */ function debug($var,$title=""){ echo "<br><b>".$title."</b>"; echo "<pre>"; print_r($var); echo "</pre>"; } /** * $strDate1 (string) date au format Y-m-d * $strDate2 (string) date au format Y-m-d * return (array) liste des mois entre les deux dates */ function getMonth($strDate1,$strDate2){ $date1 = new DateTime($strDate1); debug($date1,"date1"); $date2 = new DateTime($strDate2); debug($date2,"date2"); if($date1 <= $date2){ $arr_mois = array(); $arr_mois[] = $date1->format('m'); while($date1 <= $date2){ $date1->add(new DateInterval("P1M")); $arr_mois[] = $date1->format('m'); } }else{ echo "Erreur : Date1 est plus grand que Date2 !"; $arr_mois = NULL; } return $arr_mois; } //-------------------------------------------------------------// // DEBUT DU CODE //-------------------------------------------------------------// $date_entree = '2018-09-30'; $today = date("Y-m-d"); //Premier exemple avec les dates tel que tu les a mises : $mois = getMonth($date_entree,$today); debug($mois,'Liste des mois'); //second exemple avec les dates dans le "bon" ordre: $mois = getMonth($today,$date_entree); debug($mois,'Liste des mois');
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionfunction getMonth($strDate1,$strDate2){ $date1 = new DateTime(date('Y-m-01',strtotime($strDate1))); debug($date1,"date1"); $date2 = new DateTime(date('Y-m-01',strtotime($strDate2))); debug($date2,"date2"); if($date1 <= $date2){ $arr_mois = array(); $arr_mois[] = $date1->format('m'); while($date1 < $date2){ $date1->add(new DateInterval("P1M")); $arr_mois[] = $date1->format('m'); } }else{ echo "Erreur : Date1 est plus grand que Date2 !"; $arr_mois = NULL; } return $arr_mois; }
<?php //activation des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); function getMonth($strDate1,$strDate2){ $date1 = new DateTime(date('Y-m-01',strtotime($strDate1))); debug($date1,"date1"); $date2 = new DateTime(date('Y-m-01',strtotime($strDate2))); debug($date2,"date2"); if($date1 <= $date2){ $arr_mois = array(); $arr_mois[] = $date1->format('m'); while($date1 < $date2){ $date1->add(new DateInterval("P1M")); $arr_mois[] = $date1->format('m'); } }else{ echo "Erreur : Date1 est plus grand que Date2 !"; $arr_mois = NULL; } return $arr_mois; } $date1 = new DateTime('2017-07-29'); debug($date1,"date1"); $date2 = new DateTime('2018-11-05'); debug($date2,"date2"); $mois = array(); $mois[] = $date1->format('Y-m'); while($date1 <= $date2){ $date1->add(new DateInterval("P1M")); $mois[] = $date1->format('Y-m'); } debug($mois,'Liste des mois'); ?>
/** * Fonction de debug */ function debug($var,$title=""){ echo "<br><b>".$title."</b>"; echo "<pre>"; print_r($var); echo "</pre>"; }
<?php //activation des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); /** * Fonction de debug */ function debug($var,$title=""){ echo "<br><b>".$title."</b>"; echo "<pre>"; print_r($var); echo "</pre>"; } function getMonth($strDate1,$strDate2){ $date1 = new DateTime(date('Y-m-01',strtotime($strDate1))); debug($date1,"date1"); $date2 = new DateTime(date('Y-m-01',strtotime($strDate2))); debug($date2,"date2"); if($date1 <= $date2){ $arr_mois = array(); $arr_mois[] = $date1->format('m'); while($date1 < $date2){ $date1->add(new DateInterval("P1M")); $arr_mois[] = $date1->format('m'); } }else{ echo "Erreur : Date1 est plus grand que Date2 !"; $arr_mois = NULL; } return $arr_mois; } $date1 = new DateTime('2017-07-29'); debug($date1,"date1"); $date2 = new DateTime('2018-11-05'); debug($date2,"date2"); $mois = array(); $mois[] = $date1->format('Y-m'); while($date1 <= $date2){ $date1->add(new DateInterval("P1M")); $mois[] = $date1->format('Y-m'); } debug($mois,'Liste des mois'); ?>
<?php //-------------------------------------------------------------// // FONCTIONS //-------------------------------------------------------------// /** * Fonction de debug */ function debug($var,$title=""){ echo "<br><b>".$title."</b>"; echo "<pre>"; print_r($var); echo "</pre>"; } /** * $strDate1 (string) date au format Y-m-d * $strDate2 (string) date au format Y-m-d * return (array) liste des mois entre les deux dates */ function getMonth($strDate1,$strDate2){ $date1 = new DateTime(date('Y-m-01',strtotime($strDate1))); debug($date1,"date1"); $date2 = new DateTime(date('Y-m-01',strtotime($strDate2))); debug($date2,"date2"); if($date1 <= $date2){ $arr_mois = array(); $arr_mois[] = $date1->format('m'); while($date1 < $date2){ $date1->add(new DateInterval("P1M")); $arr_mois[] = $date1->format('m'); } }else{ echo "Erreur : Date1 est plus grand que Date2 !"; $arr_mois = NULL; } return $arr_mois; } //-------------------------------------------------------------// // DEBUT DU CODE //-------------------------------------------------------------// $date_entree = '2018-09-30'; $today = '2017-07-29'; //second exemple avec les dates dans le "bon" ordre: $mois = getMonth($today,$date_entree); debug($mois,'Liste des mois'); ?>
date1
DateTime Object
(
[date] => 2017-07-01 00:00:00
[timezone_type] => 3
[timezone] => UTC
)
date2
DateTime Object
(
[date] => 2018-09-01 00:00:00
[timezone_type] => 3
[timezone] => UTC
)
Liste des mois
Array
(
[0] => 07
[1] => 08
[2] => 09
[3] => 10
[4] => 11
[5] => 12
[6] => 01
[7] => 02
[8] => 03
[9] => 04
[10] => 05
[11] => 06
[12] => 07
[13] => 08
[14] => 09
)
12 janv. 2018 à 07:39
Et dans une boucle incrémenter le mois pour aller de ta date de départ jusqu'à la date de fin.
La encore en alimentant un array ..
Je suis étonnée que tu n'aies pas trouvé d'exemple sur le net... Y'en a pourtant pas mal...