Надёжный метод разделяет полное время смены, перерыв и отработанное время. Такой итог легко проверить при изменении перерыва.
Сначала найдите полные минуты смены
Для смены 09:00–17:30 полная длительность равна 8 часам 30 минутам, то есть 510 минутам. Целые минуты исключают округление при сложении.
Вычтите только указанный перерыв
Неоплачиваемый перерыв 30 минут превращает 510 полных минут в 480 отработанных, то есть 8:00. WorkHours не придумывает перерыв и не решает, оплачивается ли он.
Сложите отработанные минуты, затем форматируйте
Сложите чистые минуты всех смен до перевода итога в Ч:ММ или десятичные часы. Так сохраняется точность до минуты. Правила перерывов вашей организации проверяйте отдельно.