Algorytm do wykrywania nakładających się okresów [duplikat]

To pytanie ma już odpowiedź tutaj:

Określ, czy dwa zakresy dat pokrywają się 34 odpowiedzi

Muszę wykryć, czy dwa przedziały czasowe się pokrywają.
Każdy okres ma datę początkową i końcową.
Muszę wykryć, czy mój pierwszy okres (A) pokrywa się z innym (B / C).
W moim przypadku, jeśli początek B jest równy końcowi A, nie nakładają się (odwrotnie)
Znalazłem następujące przypadki:

Więc właściwie robię to w ten sposób:

tStartA < tStartB && tStartB < tEndA //For case 1
OR
tStartA < tEndB && tEndB <= tEndA //For case 2
OR
tStartB < tStartA  && tEndB > tEndA //For case 3

(Przypadek 4 jest uwzględniany na koncie w przypadku 1 lub 2)

ToPrac, ale wydaje się niezbyt wydajny.

Więc po pierwsze jest istniejąca klasa w języku c #, która może to modelować (przedział czasowy), coś w rodzaju przedziału czasowego, ale z ustaloną datą rozpoczęci

Drugie: czy jest już kod c # (jak wDateTime class), które sobie z tym poradzą?

Trzeci: jeśli nie, jakie byłoby Twoje podejście, aby porównanie to było jak najszybsze?

questionAnswers(12)

yourAnswerToTheQuestion