我有兩個DateTime值,分別叫做StartDate
和EndDate
。默認情況下它們只能跨越一週的時間,但用戶可以將它們擴展得更遠。對於DayOfWeek的每條語句枚舉
我想寫一個HTML表格,將插入在那個時間跨度foreach行的行。
例如:
foreach DayOfWeek in (StartDate thru EndDate)<br/>
OUTPUT
<tr>
<th>[DAYOFWEEK]</th>
</tr>
我有兩個DateTime值,分別叫做StartDate
和EndDate
。默認情況下它們只能跨越一週的時間,但用戶可以將它們擴展得更遠。對於DayOfWeek的每條語句枚舉
我想寫一個HTML表格,將插入在那個時間跨度foreach行的行。
例如:
foreach DayOfWeek in (StartDate thru EndDate)<br/>
OUTPUT
<tr>
<th>[DAYOFWEEK]</th>
</tr>
沒有測試,但應該工作。
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支持結束日期>開始日期
Console.WriteLine不會寫,任何想法得到它呈現,
@AnirudhaGupta - 控制檯WriteLine只是一個例子。如何輸出文字取決於您使用的技術。 –
@{
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/>
}
}
這是使用MVC剃鬚刀嗎?或者這只是簡單的HTML/Javascript? – christiandev
請參閱[C#:迭代在StartDate和EndDate之間的每一天](http://stackoverflow.com/questions/3359768/c-iterate-over-each-day-between-startdate-and-enddate) – Laoujin
Sooo ...究竟是什麼問題? :) – Crono