Отрицательное время в 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 с половиной часов ко времени начала, а затем получает разницу от времени окончания.

Другие вопросы по тегам