我需要找出一个新创建的事件是否超过任何现有的事件。
事件表
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;
}发布于 2011-04-06 19:31:47
倒过来问“什么时候两个间隔不重叠?”可能更简单。答:当区间A的末尾等于区间B的起点时,或者当区间B的终点为<=时,区间A的起点就是区间A的起点。为此创建一个表达式,并求反。
发布于 2011-04-06 19:32:27
您可能会发现following article很有用,尤其是TimePeriodIntersector类。
https://stackoverflow.com/questions/5565564
复制相似问题