Dies ist offensichtlich ein triviales Problem in Systemen, in denen die Anfangs- und Endzeiten Datenstrukturen sind, die sowohl Datum als auch Uhrzeit enthalten. Aber es gibt viele Systeme, die dies nicht tun. Es ist sehr üblich, dass Zeiterfassungssysteme einen einzigen Datensatz haben, der ein Datum, eine Startzeit und eine Endzeit enthält. In diesem Fall ist das Problem weniger trivial.
Ich glaube, es gibt zwei Fragen, die Sie stellen:
- Wie kann ich feststellen, ob eine Zeitspanne über Mitternacht hinausgeht?
- Wenn eine Zeitspanne über Mitternacht hinausgeht, wie viel von der Zeit ist am ersten Tag und wie viel am zweiten Tag passiert?
Die erste Frage ist leicht zu beantworten: Wenn die Endzeit vor der Startzeit liegt, hat die Zeitspanne Mitternacht überschritten.
Wenn dies der Fall ist, müssen Sie zwei Beträge berechnen. Der Betrag der Zeitspanne, die an dem Datum aufgetreten ist, ist die Zeit zwischen der Startzeit und Mitternacht. Der Betrag der Zeitspanne, die am nächsten Datum aufgetreten ist, ist die Zeit zwischen Mitternacht und der Endzeit (d. h. nur die Endzeit).