Я хочу, чтобы подсчитать, сколько месяцев существует между двумя датами:DateInterval возвращает 0 месяцев?
$from = new DateTime('2014-11-01 00:00:00');
$to = new DateTime('2014-12-01 00:00:00');
$diff = $from->diff($to);
echo $diff->m; // <-- 0
Разница между 2014-11-01 00:00:00
и 2014-12-01 00:00:00
должно быть ровно один месяц, не так ли? Но $diff->m
говорит . diff->d
говорит вместо этого 30 дней.
Если бы я попробовать то же самое с 2014-01-01 00:00:00
и 2014-02-01 00:00:00
, $diff->m
говорит месяц сейчас, что является правильным.
Я что-то пропустил?
EDIT:
Как мне нужно только подсчитать, сколько месяцев есть между двумя заданными датами и пользователем вставляет из и до даты с месяцем и годом (12/2014), лучшее решение работает для меня просто растет к дате по:
// user inserts
// from: 11/2014
// to: 12/2014
$from = new DateTime('2014-11-01');
$to = new DateTime('2014-12-15');
$diff = $from->diff($to);
echo $diff->m // outputs 1
Спасибо STLMikey за то, что ты дал мне ответ! ;)
'$ diff-> формат ('% м месяц,% D дней');' возвращает _ "0 месяц, 30 дней" _ в первом пример. Разница составляет 30 дней, но это должно отображаться как 1 месяц, 0 дней? –
$ from = new \ DateTime ('2014-01-01 00:00:00'); $ to = new \ DateTime ('2014-02-15 00:00:00'); разница в месяцах также «1» в этом случае тоже ... месяцы не рассчитаны как 30 дней. % d просто дает вам разницу значений месяца – STLMikey