我需要查找是否在现有事件中创建了一个新事件。
活动表
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;
}
答案 0 :(得分:3)
反转问题可能更简单,并询问“两个间隔何时不重叠?”答案:当间隔A的结束是&lt; =间隔B的开始,或者间隔B的结束是&lt; =间隔A的开始时。为此创建一个表达式,并否定它。
答案 1 :(得分:1)
您可能会发现following article有用,特别是TimePeriodIntersector
类。