2011-04-06 55 views
0

我需要找出是否創建了一個新的事件圈過任何現有的事件。檢查時間表是否相互重疊?

事件表

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; 
} 

回答

3

這可能是簡單反轉的問題,並問「做兩個區間當不是重疊?「答案:間隔A的結束時間爲< =間隔B的開始時間,或間隔B的結束時間爲< =間隔A的開始時間。爲此創建一個表達式,並對其進行否定。

+0

它檢查第二個日期範圍是否完全落入第一個日期範圍內,但我的要求不同,請考慮10-12和9-11,這裏應該說它重疊,因爲11介於10和12之間 – 2011-04-06 12:57:24

+0

@Sri Kumar:再次閱讀我的答案 - 我將區間A的_end_與區間B的_start_進行比較,並以相反的方式進行比較;這將決定間隔是否完全在彼此之外。如果它們不完全在彼此之外,則它們重疊。 – 2011-04-06 13:01:38