Это очевидно тривиальная проблема в системах, где время начала и окончания являются структурами данных, которые содержат как дату, так и время. Но есть множество систем, которые этого не делают. Очень часто системы хронометража имеют одну запись, которая содержит дату, время начала и время окончания. В этом случае проблема менее тривиальна.
Я думаю, вы задаете два вопроса:
- Как я могу определить, пересекает ли промежуток времени полночь?
- Если промежуток времени пересекает полночь, сколько времени произошло в первый день и сколько во второй?
На первый вопрос легко ответить: если время окончания предшествует времени начала, промежуток времени пересекает полночь.
Если это так, то у вас есть две суммы для расчета. Интервал времени, который произошел в дате, является временем между временем начала и полуночью. Интервал времени, который произошел в следующую дату, представляет собой время между полуночью и временем окончания (т.е. только временем окончания).