Проверьте, перекрывает ли график друг друга? - PullRequest
0 голосов
/ 06 апреля 2011

Мне нужно узнать, было ли новое событие, созданное за кругами, каким-либо из существующих событий.

Таблица событий

ID EventName StartTime EndTime 
1  Event1    11:30AM   12PM    
2  Event2    11:30AM   11:40AM 
3  Event3    11:40AM   12PM    
4  Event4    12PM      12:30PM 
5  Event5    11:30AM   12:30PM 

В приведенной выше таблице событие 2 перекрывает событие 1, событие 3 перекрывает событие 1, событие 5 перекрывает событие 1 ...

Текущее время начала события и время окончания существующего расписания, текущее время окончания и время начала существующего расписания могут совпадать.

Я пытаюсь сравнить, перекрывается ли время события нового события существующим временем события, используя следующую логику, но это не удается

if (currentStartTime == schedule.StartTime)
{
count++;
continue;
}
else if (currentStartTime == schedule.EndTime)
{
continue;
}
else if (currentEndTime == schedule.StartTime)
{
continue;
}
else if (currentStartTime > schedule.StartTime && currentStartTime < schedule.EndTime     && currentEndTime >= schedule.EndTime)
{
count++;
continue;
}
else if (currentEndTime <= schedule.EndTime && currentEndTime > schedule.StartTime &&     currentStartTime < schedule.StartTime)
{
count++;
continue;
}

Ответы [ 2 ]

3 голосов
/ 06 апреля 2011

Вероятно, проще перевернуть проблему и спросить "когда два интервала не перекрываются?" Ответ: когда конец интервала A равен <= началу интервала B или когда конец интервала B равен <= началу интервала A. Создайте для этого выражение и отрицайте его. </p>

1 голос
/ 06 апреля 2011

Вы можете найти следующую статью полезной, особенно класс TimePeriodIntersector.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...