对于DayOfWeek Enum的每个语句

Jus*_*ins 0 c# foreach datetime

我有两个DateTime值调用StartDateEndDate.默认情况下,它们只跨越一周的时间,但是,用户可以将它们进一步扩展.

我正在尝试编写一个HTML表,它将在那段时间内插入行.

例如:

foreach DayOfWeek in (StartDate thru EndDate)<br/>
OUTPUT
 <tr>
  <th>[DAYOFWEEK]</th>
 </tr>
Run Code Online (Sandbox Code Playgroud)

Jür*_*ock 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>");
Run Code Online (Sandbox Code Playgroud)

更新

刚开始写这个小助手的灵感

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

用法

DateTimeHelper.ForEach(startDate, endDate, date =>
{
    Console.WriteLine(date);
});
Run Code Online (Sandbox Code Playgroud)

Update2:修复了对EndDate> StartDate的ForEach支持