检查时间表是否相互重叠?

时间:2011-04-06 11:27:12

标签: c# asp.net logic

我需要查找是否在现有事件中创建了一个新事件。

活动表

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 个答案:

答案 0 :(得分:3)

反转问题可能更简单,并询问“两个间隔何时重叠?”答案:当间隔A的结束是&lt; =间隔B的开始,或者间隔B的结束是&lt; =间隔A的开始时。为此创建一个表达式,并否定它。

答案 1 :(得分:1)

您可能会发现following article有用,特别是TimePeriodIntersector类。