Algorithmus zum Erkennen überlappender Perioden [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Bestimmen Sie, ob sich zwei Datumsbereiche überlappen 34 answers

Ich muss feststellen, ob sich zwei Zeiträume überschneiden.
Jeder Zeitraum hat ein Start- und ein Enddatum.
Ich muss feststellen, ob sich meine erste Zeitspanne (A) mit einer anderen überschneidet (B / C).
In meinem Fall, wenn der Anfang von B gleich dem Ende von A ist, überlappen sie sich nicht (auch die Umkehrung)
Ich habe folgende Fälle gefunden:



Also eigentlich mache ich das 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)

It works, aber es scheint nicht sehr effizient.

So, zuerst gibt es eine vorhandene Klasse in c #, die dies modellieren kann (einen Zeitraum), so etwas wie eine Zeitspanne, aber mit einem festen Startdatum.

Secondly: Gibt es schon einen C # Code (wie imDateTime Klasse) was kann das?

Drittens: Wenn nein, wie würden Sie vorgehen, um diesen Vergleich am schnellsten durchzuführen?