10

我正在尝试在 2 个时间段之间循环遍历每周的每一天

  DateTime start = new DateTime(2010, 1, 1);
  DateTime end = new DateTime(2011, 12, 12);

我已经设法使用以下代码获取这些日期之间的天数

     TimeSpan range = (end - start);

结果是710。

我现在正在寻找每个月的星期几,

例如

1 月 1 日 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 171 18 19 20 。. .

与匹配

MTWTFSSMTWTFSSM

我知道 c# 有一个来自 DateTime 类 DayOfWeek 的属性,它获取星期几我的问题是构建一个循环来执行上述操作?

任何人?

4

3 回答 3

21

这将遍历从开始日期到结束日期的所有日期,并获取每个日期的星期几。

DateTime startDate = new DateTime(2010, 1, 1);
DateTime endDate = new DateTime(2011, 12, 12);
for (DateTime date = startDate; date <= endDate; date = date.AddDays(1))
{
    DayOfWeek dw = date.DayOfWeek;
    // ...
}

除非您真的担心优化,否则我不会寻求更复杂的东西。

于 2010-04-21T14:34:54.247 回答
3

我喜欢以下内容:

static IEnumerable Days(DateTime start, DateTime end)
{
    while (start < end)
    {
        string day = start.ToString("ddd");

        start = start.AddDays(1);

        yield return day;
    }
}

如何使用它:

foreach(string s in Days(new DateTime(2010, 1, 1), new DateTime(2010, 2, 1)))
{
    Console.WriteLine(s);
}

当然,您可以修改它以返回各种类型。

于 2010-04-21T14:44:23.883 回答
3

使用 LINQ:

DateTime start = new DateTime(2010, 1, 1);
DateTime end = new DateTime(2011, 12, 12);
int days = (end  - start).Days;

Enumerable
    .Range(0, days)
    .Select(x => start.AddDays(x))
    .ToList()
    .ForEach(d =>
    {
        DayOfWeek dayOfWeek = d.DayOfWeek;
        // do what you want
    });
于 2010-04-21T16:17:17.080 回答