【问题标题】:For Each statement for DayOfWeek Enum对于 DayOfWeek 枚举的每个语句
【发布时间】:2014-02-20 14:25:04
【问题描述】:

我有两个 DateTime 值,分别称为 StartDateEndDate。默认情况下,它们只跨越一周的时间,但是,用户可以将它们扩展得更远。

我正在尝试编写一个 HTML 表格,该表格将在该时间跨度内的每一天插入行。

例如:

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

【问题讨论】:

标签: c# datetime foreach


【解决方案1】:

未经测试,但应该可以工作。

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 对 EndDate > StartDate 的支持

【讨论】:

  • Console.WriteLine 不会写,任何想法让它呈现, 标签也不起作用,任何猜测?
  • @AnirudhaGupta - 控制台 WriteLine 只是一个例子。如何输出文本取决于您使用的技术。
【解决方案2】:
@{
    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/>
    }
}

【讨论】:

    猜你喜欢
    • 2013-06-26
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    相关资源
    最近更新 更多