2014-02-20 89 views
0

我有兩個DateTime值,分別叫做StartDateEndDate。默認情況下它們只能跨越一週的時間,但用戶可以將它們擴展得更遠。對於DayOfWeek的每條語句枚舉

我想寫一個HTML表格,將插入在那個時間跨度foreach行的行。

例如:

foreach DayOfWeek in (StartDate thru EndDate)<br/> 
OUTPUT 
<tr> 
    <th>[DAYOFWEEK]</th> 
</tr> 
+0

這是使用MVC剃鬚刀嗎?或者這只是簡單的HTML/Javascript? – christiandev

+3

請參閱[C#:迭代在StartDate和EndDate之間的每一天](http://stackoverflow.com/questions/3359768/c-iterate-over-each-day-between-startdate-and-enddate) – Laoujin

+0

Sooo ...究竟是什麼問題? :) – Crono

回答

6

沒有測試,但應該工作。

var startDate = new DateTime(2014, 2, 20); 
var endDate = new DateTime(2014, 3, 10); 

var days = (endDate - startDate).TotalDays; 

Console.WriteLine("<tr>"); 
for(int i = 0; i <= days; i++) 
{ 
    var theDate = startDate.AddDays(i); 
    Console.WriteLine("<th>{0}</th>", theDate.DayOfWeek); 
} 
Console.WriteLine("</tr>"); 

更新

剛剛得到啓發,寫這個小幫手

public static class DateTimeHelper 
{ 
    public static void ForEach(DateTime from, DateTime to, Action<DateTime> action) 
    { 
     if (to < from) 
      for (DateTime date = from; date.Date >= to.Date; date = date.AddDays(-1)) 
       action.Invoke(date); 
     else 
      for (DateTime date = from; date.Date <= to.Date; date = date.AddDays(1)) 
       action.Invoke(date); 
    } 
} 

使用

DateTimeHelper.ForEach(startDate, endDate, date => 
{ 
    Console.WriteLine(date); 
}); 

UPDATE2:固定的ForEach支持結束日期>開始日期

+0

Console.WriteLine不會寫,任何想法得到它呈現,標記也不工作,任何猜測? – Adrian

+0

@AnirudhaGupta - 控制檯WriteLine只是一個例子。如何輸出文字取決於您使用的技術。 –

0
@{ 
    DateTime start = new DateTime(2013, 08, 12); 
    DateTime end = new DateTime(2013, 08, 24); 


    for (DateTime d = start; d < end; d = d.AddDays(1)) 
    { 
     @(d.ToString()) <br/> 
    } 
}