Gitt to datointervaller, hva er den enkleste eller mest effektive måten å avgjøre om de to datointervallene overlapper hverandre på?
Anta for eksempel at vi har datointervallene StartDato1
til SluttDato1
og StartDato2
til SluttDato2
.
Jeg tror det er tilstrekkelig å si at de to områdene overlapper hverandre hvis:
(StartDate1 <= EndDate2) and (StartDate2 <= EndDate1)
Jeg ville gjøre
StartDate1.IsBetween(StartDate2, EndDate2) || EndDate1.IsBetween(StartDate2, EndDate2)
Hvor IsBetween
er noe sånt som
public static bool IsBetween(this DateTime value, DateTime left, DateTime right) {
return (value > left && value < right) || (value < left && value > right);
}
Den enkleste måten å gjøre det på er å sammenligne om EndDate1 er før StartDate2 og EndDate2 er før StartDate1.
Dette gjelder selvfølgelig hvis du vurderer intervaller der StartDate alltid er før EndDate.