Разница во времени между двумя датами даты (F j, Y) в php

У меня проблема с получением разницы в месяцах между двумя датами в месяцах.

$d1 = date_create('January 1, 2013');
$date = date("F j, Y");
$d2 = date_create($date);
$dif = date_diff($d1, $d2);
 //echo $dif->format('%y years');
 echo $dif->format('%m months');

Он показывает месяцы, но не всю разницу в месяцах. Мне просто нужна разница в месяцах между датами.


person Adeel Gill    schedule 03.11.2014    source источник
comment
В этом коде указано «10 месяцев», но реальная разница составляет 22 месяца.   -  person Adeel Gill    schedule 03.11.2014
comment
что означает «дата (F j, Y)»? Почему бы тебе не распечатать вторую дату.   -  person ericpap    schedule 03.11.2014
comment
Показывает текущую дату   -  person Adeel Gill    schedule 04.11.2014


Ответы (1)


%m отображается только до 11 месяцев. После этого заселены годы. Если вам нужно общее количество месяцев, вам нужно вычислить годы и выполнить некоторые вычисления:

$d1  = date_create('January 1, 2013');
$d2  = date_create();
$dif = date_diff($d1, $d2);
echo ($dif->format('%m') + $dif->format('%y') * 12) . ' months';

Демо

К вашему сведению, приведенное выше решение удаляет ненужный код. Если вам нужна сегодняшняя дата, просто не передавайте никаких параметров в date_create().

person John Conde    schedule 03.11.2014