Ich muss erkennen, ob sich zwei Zeiträume überschneiden.
Jeder Zeitraum hat ein Anfangs- und ein Enddatum.
Ich muss feststellen, ob sich mein erster Zeitraum (A) mit einem anderen Zeitraum (B/C) überschneidet.
In meinem Fall, wenn der Anfang von B gleich dem Ende von A ist, überschneiden sie sich nicht (auch umgekehrt)
Ich habe die folgenden Fälle gefunden:
Also mache ich das eigentlich so:
tStartA < tStartB && tStartB < tEndA //For case 1
OR
tStartA < tEndB && tEndB <= tEndA //For case 2
OR
tStartB < tStartA && tEndB > tEndA //For case 3
(Der Fall 4 wird entweder in Fall 1 oder in Fall 2 berücksichtigt)
Es Werke aber es scheint nicht sehr effizient zu sein.
Also, zunächst gibt es eine vorhandene Klasse in c#, die dies (ein Zeitraum), so etwas wie eine Zeitspanne, aber mit einem festen Startdatum modellieren kann.
Zweitens: Gibt es bereits einen c#-Code (wie in der DateTime
Klasse), die dies bewältigen kann?
Drittens: Wenn nein, wie würden Sie vorgehen, um diesen Vergleich so schnell wie möglich durchzuführen?