получить php DateInterval в общей сложности 'minutes'

Я пытаюсь получить значение PHP «DateInterval» в значении «total minutes». Как его получить? Кажется, что простой формат («% i минут») не работает?

Вот пример кода:

$test = new \DateTime("48 hours"); $interval = $test->diff(new \DateTime()); 

Теперь, если я попытаюсь получить интервал за полные дни, его штраф:

 echo $interval->format('%a total days'); 

Он показывает 2 дня как выход, что совершенно нормально. То, что я пытаюсь получить, если получить значение в «общих минутах», поэтому я попытался:

 echo $interval->format('%i total minutes'); 

Что не работает. Любая помощь ценится, чтобы получить желаемый результат.

 abs((new \DateTime("48 hours"))->getTimestamp() - (new \DateTime)->getTimestamp()) / 60 

Это самый простой способ получить разницу в минутах между двумя экземплярами DateTime .

Если вы застряли в позиции, где все, что у вас есть, это DateInterval , и вы (как и я) обнаруживаете, что, похоже, нет способа получить общие минуты, секунды или что-то DateInterval между интервалом, решение заключается в создании DateTime на нулевое время, добавьте к нему интервал, а затем получите результирующую метку времени:

 $timeInterval = //the DateInterval you have; $intervalInSeconds = (new DateTime())->setTimeStamp(0)->add($timeInterval)->getTimeStamp(); $intervalInMinutes = $intervalInSeconds/60; // and so on 

Я написал две функции, которые просто вычисляют totalTime из DateInterval. Точность может быть увеличена с учетом лет и месяцев.

 function getTotalMinutes(DateInterval $int){ return ($int->d * 24 * 60) + ($int->h * 60) + $int->i; } function getTotalHours(DateInterval $int){ return ($int->d * 24) + $int->h + $int->i / 60; } 

Это работает отлично.

 function calculateMinutes(DateInterval $int){ $days = $int->format('%a'); return ($days * 24 * 60) + ($int->h * 60) + $int->i; }