Изящный способ получить количество месяцев между двумя датами?

Давайте предположим, что у меня есть две даты в переменных, как

$date1 = "2009-09-01";
$date2 = "2010-05-01";

Я должен получить количество месяцев между $date2 и $date1($date2 >= $date1). Т.е. я должен добраться 8.

Существует ли способ получить его при помощи функции даты, или я должен взорвать свои строки и сделать некоторые вычисления?

Большое спасибо

59
задан 20 November 2010 в 18:59

1 ответ

strtotime не очень точен, он проводит приблизительный подсчет, он не принимает во внимание фактические дни месяца.

лучше принести даты ко дню, который всегда присутствует в каждом месяце.

$date1 = "2009-09-01";
$date2 = "2010-05-01";

$d1 = mktime(0, 0, 1, date('m', strtotime($date1)), 1, date('Y', strtotime($date1)));
$d2 = mktime(0, 0, 1, date('m', strtotime($date2)), 1, date('Y', strtotime($date2)));

 $total_month = 0;
 while (($d1 = strtotime("+1 MONTH", $d1)) <= $d2) {
     $total_month++;
 }
echo $total_month;
0
ответ дан 1 November 2019 в 11:09

Другие вопросы по тегам:

Похожие вопросы: