Для этого вам понадобятся две переменные, одна из которых предназначена для начала работы, а вторая - для завершения работы.
Эту проблему легко решить, получив дату в UNIX.отметка времени для каждой переменной.
function timeAgo($startTime, $endTime){
$seconds = strtotime($endTime) - strtotime($startTime);
$minutes = ($seconds / 60) % 60;
$hours = floor($seconds / 60 / 60);
return $hours . ":" . $minutes;
}
$startTime = "2018-12-24 09:00:00";
$endTime = "2018-12-25 15:30:00";
echo timeAgo($startTime, $endTime);
Возвращает 30:30
Если вы используете DateTime, вы можете просто вывести DateTime в качестве отметки времени UNIX вместо использования strtotime.(Предполагая, что вы передаете DateTime в качестве аргументов для функции).
function timeAgo($startTime, $endTime){
$seconds = $endTime->getTimestamp() - $startTime->getTimestamp();
$minutes = ($seconds / 60) % 60;
$hours = floor($seconds / 60 / 60);
return $hours . ":" . $minutes;
}
echo timeAgo($startTime, $endTime); // $startTime and $endTime has to be DateTime.