2016-04-13 204 views
0

簡單地說,我有一個日期範圍對象,它存儲了一個開始/結束日期。 我想要比較2個不重疊的日期範圍,但也允許第一個範圍結束日期等於第二個範圍開始日期的相鄰範圍。重疊比較日期範圍,但允許相鄰範圍

範圍1 = 2016年1月1日10:00 AM - 2016年1月1日上午10時30 範圍2 = 2016年1月1日上午10時30分 - 2016年1月1日11:30 AM

我已經有幾個人在創建ac#的功能,但似乎無法正常工作。

任何幫助表示讚賞。

+1

你現在有什麼? –

回答

0

像這樣的東西應該工作:

public class DateRange 
{ 
    public DateTime StartDate { get; set; } 
    public DateTime EndDate { get; set; } 

    public bool Overlaps(DateRange otherRange) 
    { 
     if (StartDate < otherRange.EndDate && StartDate >= otherRange.StartDate) 
      return true; 
     if (otherRange.StartDate < EndDate && otherRange.StartDate >= StartDate) 
      return true; 
     if (EndDate > otherRange.StartDate && EndDate <= otherRange.EndDate) 
      return true; 
     if (otherRange.EndDate < StartDate && otherRange.EndDate >= EndDate) 
      return true; 

     return false;     
    } 
+0

謝謝你看起來好像很棒! – Milsnipsky

0

的幫助偉大的工程:-)感謝。我已經使用以下方案測試了上述代碼:

//這需要將以下範圍場景記入帳戶 // 1。 range1從range2開始,每當
// 2時結束。 range2從range1開始,每當
// 3時結束。範圍1在範圍2開始之前開始,並在範圍2內或範圍之後結束
// 4。範圍2在範圍1開始之前開始並在範圍1內或範圍後結束
// 5。範圍1完全重疊範圍2
// 6。範圍2完全重疊範圍1

它應該允許r1結束等於r2開始的相鄰範圍。