DateInterval — разница между двумя значениями времени

У меня есть 2 раза (DateInterval - php), и я хотел бы получить разницу между ними (что-то вроде функции "diff()" для DateTime).

Моя ситуация:

$task->estimate->format('%H:%I');          // HOURS:MINUTES / DateInterval 
$task->total_time->format('%H:%I');        // HOURS:MINUTES / DateInterval 
$task->total_time->diff($task->estimate);  // Not workin, only for DateTime
// difference between them?

Было бы здорово, не считая секунды, должен быть простой способ сделать это.


person Jax-p    schedule 19.03.2017    source источник
comment
Возможный дубликат разницы PHP между двумя временами   -  person niceman    schedule 19.03.2017
comment
В чем вопрос?   -  person Jared Farrish    schedule 19.03.2017
comment
@niceman Нет, date_diff не работает (date_diff() ожидает, что параметр 1 будет DateTimeInterface, заданный объект), и date_create() тоже не работает (не принимает нормальные или форматированные даты типа DateInterval)   -  person Jax-p    schedule 19.03.2017
comment
@JaredFarrish, как получить разницу между двумя значениями типа DataInterval (НЕ DateTime)   -  person Jax-p    schedule 19.03.2017
comment
разница между (сейчас+интервал1) и (сейчас+интервал2)   -  person splash58    schedule 19.03.2017
comment
@ всплеск58, как ты это имеешь в виду? можете показать пример php?   -  person Jax-p    schedule 19.03.2017
comment
Если вы можете превратить свою оценку и общее время в общее количество минут (или секунд...), вы можете вычесть два из общего количества секунд, а затем превратить это в количество минут и/или часов.   -  person Jared Farrish    schedule 19.03.2017


Ответы (1)


Вы можете рассчитать diif из (любое время + интервал1) и (одно и то же время + интервал2)

$estimate = new DateInterval('PT6H8M');
$total_time  = new DateInterval('PT5H7M');
$time = new DateTime('midnight');
$time->add($total_time);
$time1 = new DateTime('midnight');
$diff = $time1->add($estimate)->diff($time);
var_dump($diff); // object(DateInterval) ... ["h"]=> int(1) ["i"]=> int(1)  ...
person splash58    schedule 19.03.2017