Час, минутная разница в переполнении стека

Я ищу решение в Php.

У меня есть общее время для выполнения задачи в формате чч: мм: сс. (Дата не важна).
и я ввожу каждое рабочее время также в формате чч: мм: сс. Теперь я должен выяснить оставшиеся часы в формате чч: мм: сс.

пример

16:00:00 назначенные часы для выполнения задачи.
В разные даты один сотрудник работал 13:15:00 часов
Теперь мне нужны оставшиеся часы в формате 2:45:00 в формате.

Если дата прикреплена, то мы можем сделать как

datetime1 = new DateTime('2014-02-11 04:04:26 AM');
$datetime2 = new DateTime('2014-02-11 05:36:56 AM');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%h')." Hours ".$interval->format('%i')." Minutes";

В моем случае нет даты. Есть ли какая-либо функциональность в PHP, чтобы найти этот тип разницы чч: мм: сс?

0

Решение

Преобразуйте формат ЧЧ: ММ: СС в длительность в секундах, вычтите их, отформатируйте обратно в формат ЧЧ: ММ: СС:

function str_to_seconds($duration) {
list($h, $m, $s) = explode(':', $duration);
return $s + ($m * 60) + ($h * 3600);
}

function seconds_to_str($seconds) {
return sprintf('%02d:%02d:%02d', $seconds / 3600, $seconds / 60 % 60, $seconds % 60);
}

echo seconds_to_str(str_to_seconds('16:00:00') - str_to_seconds('13:15:00'));
0

Другие решения

Вы должны преобразовать его в метку времени, а затем рассчитать разницу и отформатировать эту разницу, чтобы она отображалась как обычная дата.

Что-то вроде этого:

function dateDifference($date_1 , $date_2 , $differenceFormat = '%a' )
{
$datetime1 = date_create($date_1);
$datetime2 = date_create($date_2);

$interval = date_diff($datetime1, $datetime2);

return $interval->format($differenceFormat);

}
0

Супер короткая версия

$secondsDiff = abs(strtotime("2014-02-11 04:04:26 AM") - strtotime("2014-02-11 05:36:56 AM"));
echo sprintf("%02d", floor($secondsDiff / 3600)) . ":" . sprintf("%02d", floor($secondsDiff / 60 %60)) . ":" . sprintf("%02d", ($secondsDiff % 60));
0
По вопросам рекламы [email protected]