Моя цель - рассчитать количество месяцев между двумя датами, включая начальный месяц.Функция расчета разницы между датой (месяцами)
Я использую эту функцию для расчета.
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;
}
В большинстве случаев в работает отлично, но когда параметры функции, например:
$date1 = 2015-11-04 00:00:00
$date2 = 2017-02-01 00:00:00
Функция возвращает:
15
16
Должно быть. Что мне не хватает? Я снова собрал здесь на Stackoverflow, попробовал различные реализации предоставленного кода, но проблема все еще сохраняется.
Спасибо.
добавить один в результат будет 16, то –
Зачем это должно быть 16? ('2015-11',' 2015-12', '2016-01',' 2016-02', '2016-03';' 2016-04'; '2016-05';' 2016-06'; ' 2016-07'; '2016-08';' 2016-09'; '2016-10';' 2016-11'; '2016-12';' 2017-01' - __15__ месяца) –
И почему '$ begin = new DateTime (дата ('Ym-d', strtotime ($ date1))); '? Почему бы не просто '$ begin = new DateTime ($ date1);'? –