2012-06-03 92 views
0

我需要一些清晰的頭腦來檢查另一個區間之間的日期範圍是否爲假。這裏是發生了什麼事情:c#檢查一個區間之間的日期範圍

DateTime[] dates = new DateTime[20]; 
dates[0] = Convert.ToDateTime(initial_date); 
for (int i = 1; i <= 19; i++) 
{ 
dates[i] = initial_date.AddYears(i); 
} 

所以我有一個存儲20日期的數組。如果initial_date = 1/20/2012陣列從日期[0] = 1/20/2012直到日期[19] = 1/20/2031 現在我想檢查用戶是否選擇兩個日期爲例2013年1月1日和2014年1月1日的選擇落在數組的第一個元素(日期[0])和第二個(日期[1])之間。到目前爲止:

DateTime a1 = Convert.ToDateTime(vtable.Rows[0][0]); 
DateTime a2 = Convert.ToDateTime(vtable.Rows[vtable.Rows.Count - 1][0]); 
DateTime start = DateTime.MinValue; 
DateTime end = DateTime.MaxValue; 
for (int i = 0; i < 20; i++) 
      { 
       if (a1.CompareTo(dates[i]) >= 0) 
       { 
        start = dates[i]; 
        for (int j = 19; j > 0 ; j--) 
        { 
         if (a2.CompareTo(dates[j]) >= 0) 
         { 
          end = dates[j]; 
          break; 
         } 
        } 
        break; 
       } 
      } 

這是工作到用戶選擇僅落在數組的一個元素之間的日期範圍。例如,如果選擇是2012年1月30日 - 2012年5月30日,然後開始=日期[0]和結束=日期[0] 我知道我可以簡單說明如果結束==未分配,然後結束=開始,但我想是更好地糾正算法較底 應用補丁非常感謝您

+0

所以,你想在陣列中的點將適合輸入範圍?然後,對於2012年1月30日 - 2012年5月30日,我預計日期[0] - 日期[1]。我在這裏錯過了什麼?你能提供更多的測試用例嗎?更好的是,把它們寫成單元測試。 –

回答

0

Store中的日期範圍爲對作爲起點到終點,在那裏結束下一步將開始 - 19天。

使代碼中的事情更清晰。

0
var rangeMax = dates.Max(); 
var rangeMin = dates.Min(); 

DateTime a1 = Convert.ToDateTime(vtable.Rows[0][0]); 
DateTime a2 = Convert.ToDateTime(vtable.Rows[vtable.Rows.Count - 1][0]); 

if ((a1 > rangeMin) && (a1 < rangeMax) && (a2 > rangeMin) && (a2 < rangeMax)) 
{ 
    //dates are in given range 
} 
相關問題