2016-04-13 2 views
0

Простыми словами у меня есть объект диапазона дат, который хранит дату начала и окончания. Я хочу сравнить 2 диапазона дат без перекрытия, но также допускать смежные диапазоны, где дата окончания первого диапазона равна дате начала второго диапазона.Сравнить диапазоны дат для перекрытия, но допускающие смежные диапазоны

Диапазон 1 = 1/1/2016 10:00 утра - 1/1/2016 10:30 утра Диапазон 2 = 1/1/2016 10:30 утра - 1/1/2016 11:30 утра

I 've hada несколько идет на создание функции aC#, но can not кажется, что это работает правильно.

Любая помощь приветствуется.

+1

И что у вас есть? –

ответ

0

Что-то, как это должно работать:

public class DateRange 
{ 
    public DateTime StartDate { get; set; } 
    public DateTime EndDate { get; set; } 

    public bool Overlaps(DateRange otherRange) 
    { 
     if (StartDate < otherRange.EndDate && StartDate >= otherRange.StartDate) 
      return true; 
     if (otherRange.StartDate < EndDate && otherRange.StartDate >= StartDate) 
      return true; 
     if (EndDate > otherRange.StartDate && EndDate <= otherRange.EndDate) 
      return true; 
     if (otherRange.EndDate < StartDate && otherRange.EndDate >= EndDate) 
      return true; 

     return false;     
    } 
+0

Спасибо, похоже, отлично работает! – Milsnipsky

0

прекрасно работает :-) спасибо за вашу помощь. я протестировал вышеуказанный код со следующими сценариями:

// Это должно занять в аккаунте следующие диапазонные сценарии // 1. диапазон1 начинается в диапазоне2 и заканчивается всякий раз, когда
// 2. range2 начинается в диапазоне 1 и заканчивается всякий раз, когда
// 3. диапазон1 начинается до начала диапазона2 и заканчивается в или после диапазона2
// 4. диапазон2 начинается до начала диапазона1 и заканчивается в или после диапазона1
// 5. диапазон1 полностью перекрывает диапазон2
// 6. диапазон2 полностью перекрывает диапазон 1

Он должен допускать смежные диапазоны, где конец r1 равен началу r2.

Смежные вопросы