Я пытался понять это в течение нескольких часов, но безрезультатно: как получить разницу в полных месяцах между двумя датами, но учет в течение года? Код ниже
$assignedDate = new DateTime('2011-02-03'); $firstDate = new DateTime('2013-03-03'); $interval = $assignedDate->diff($firstDate); $months = (int)$interval->format('%m');
Является убежденным в том, что разница между ними равна 1, однако это не применимо для моего приложения, и 49 будет ожидаемым результатом, я исследовал и нашел этот код из этого замечательного места, но получаю «Неправильный оператор конкатенации строк », поэтому я предположил, что проблема связана с их строгим выходом и put (int) перед ними, но получил 0:
echo (($diff->format('%y') * 12) + $diff->format('%m')) . " full months difference";
Есть ли надежное решение найти разницу в месяце между двумя датами, учитывающими год?
Нет необходимости форматировать числа с помощью метода format()
. Вы можете просто получить доступ к общедоступным свойствам объекта DateInterval
:
$months = $interval->m + $interval->y * 12;
демонстрация