Отрицательное время в PHP
Я рассчитываю количество часов, отработанных сотрудником, и должен знать, отработал ли сотрудник лишние часы или не отработал ли сотрудник общее количество часов, соответствующее его профилю.
Например:
Day From_Hour To_Hour Hs_Worked Extra_time PHP_Return
1 11:00 19:30 08:30 00:00 00:00
2 11:30 19:30 08:00 -00:30 23:00
3 11:00 19:45 08:45 -00:15 23:45
4 11:00 19:55 08:55 +00:10 00:10
У меня есть все значения, но мне нужно вычислить Extra_time, и у меня нет проблем с положительными значениями, но когда я пытаюсь вычесть больше времени, которое у меня есть, php возвращает эквивалент предыдущего дня.
Как я могу добавить и вычесть времена, имеющие только положительные или отрицательные времена (без часов предыдущих дней)?
1 ответ
Решение
$start = DateTime::createFromFormat('H:i', '11:30');
$start->add(new DateInterval('PT8H30M'));
$end = DateTime::createFromFormat('H:i', '19:30');
$diff = $start->diff($end);
echo $diff->format('%r%H:%I');
Это просто добавляет 8 с половиной часов ко времени начала, а затем получает разницу от времени окончания.