mon objectif est de calculer le nombre de mois entre deux dates, y compris le mois de départ. J'utilise cette fonction pour calculer.Fonction de calcul de différence entre datetime (mois)
function number_months($date1, $date2){
$begin = new DateTime(date('Y-m-d', strtotime($date1)));
$end = new DateTime(date('Y-m-d', strtotime($date2)));
$diff = $end->diff($begin);
return ($diff->format('%y') * 12) + $diff->format('%m') + 1;
}
Dans la plupart des cas dans les travaux fins, mais lorsque les paramètres de la fonction sont par exemple:
$date1 = 2015-11-04 00:00:00
$date2 = 2017-02-01 00:00:00
Fonction retourne:
15
devrait être 16
. Qu'est-ce que je rate? J'ai repris ici sur Stackoverflow, j'ai essayé différentes implémentations de code fourni, mais le problème persiste.
Merci.
ajouter un dans le résultat, il sera 16 alors., –
Pourquoi faut-il être 16? (2015-11), 2015-12, 2016-01, 2016-02, 2016-03, 2016-04, 2016-05, 2016-06, 2016-07 »,« 2016-09 »,« 2016-10 »,« 2016-11 »,« 2016-12 »,« 2017-01 »est de __15__ mois) –
Et pourquoi« $ begin » = new DateTime (date ('Ym-d', strtotime ($ date1))); Pourquoi ne pas simplement '$ begin = new DateTime ($ date1);'? –