2016-04-13 27 views
0

Basit bir şekilde, başlangıç ​​/ bitiş tarihlerini depolayan bir tarih aralığı nesnesine sahibim. Örtüşme için 2 tarih aralığını karşılaştırmak istiyorum, ancak aynı zamanda ilk aralık bitiş tarihinin 2. aralık başlangıç ​​tarihine eşit olduğu bitişik aralıklara da izin vermek istiyorum. 2016/01/01 11:30Karşılıklı tarih aralıkları karşılaştırın ancak bitişik aralıklara izin ver

I -

Menzil 1 = 2016/01/01 10:00 - 2016/01/01 10:30 Menzil 2 = 2016/01/01 10:30 Bir kaç tane aC# fonksiyonu yaratıyor ama doğru çalışmıyor gibi görünmüyor.

Herhangi bir yardım için teşekkür ederiz. Böyle

+1

Şimdilik ne var? –

cevap

0

şey çalışmalıdır:

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

Teşekkürler harika çalışıyor! – Milsnipsky

0

Yardımlarınız için büyük :-) sayesinde çalışır. Yukarıdaki kodu aşağıdaki senaryolarla test ettim:

// bu, hesaba aşağıdaki aralık senaryoları // 1 girmelidir. range1, range2 içinde başlar ve
// 2 olduğunda sonlanır. range2, range1 içinde başlar ve
// 3 olduğunda sona erer. range1 range2'den önce başlar ve range2
// 4'ten sonra sona ermektedir. range2, range1 başlamadan önce başlar ve range1
// 5'ten sonra sona ermektedir. range1, range2
// 6 ile örtüşüyor. range2 tamamen üst üste çakışır
r1 ucunun r2 başlangıcına eşit olduğu bitişik aralıklara izin vermelidir.

İlgili konular