Я пытаюсь вычислить количество часов, в течение которых человек работал в данный день. Для этого мне нужно получить разницу между двумя объектами DateTime в часах, минутах и секундах. До сих пор я могу успешно сделать так, как этотPHP: получить разницу между двумя объектами DateTime в часах, минутах и секундах
$timeIn = new DateTime($time['timeIn']);
$timeOut = new DateTime($time['timeOut']);
$time['hours'] = date_diff($timeIn, $timeOut) -> format("%H:%i:%s");
Это, кажется, работает хорошо, пока я не положил в тестовом случае, когда работник забыл часы из. Теперь, давайте скажем, что
$timeIn = '2016-09-28 14:26:17'
$timeOut = '2016-09-30 09:53:53'
В этом случае, разница должна быть 43:27:36 (Потому что в течение дня между timeIn и таймаута). Вместо этого я получаю 19:27:36 (как будто это просто усекает выходные и возвращает остальных). Как я могу добавить этот день на часы, а не усекать его? (Я ищу, чтобы получить 43:27:36, НЕ 1day, 19 часов, ect ect. Поэтому я пытаюсь получить ответ в HH: MM: SS)
Вы должны делать расчеты вручную. Это объясняет, как это сделать в минутах, который не слишком далеко от того, что вы хотите http://stackoverflow.com/questions/16776061/get-php-dateinterval-in-total-minutes –
Для более четкого объяснения вопроса так что вы получите лучшие ответы: Вы хотите только иметь «ЧЧ: ММ: СС», или вы в порядке с префиксом за несколько дней до начала? как в 'DD HH: MM: SS'? –