每月的每一天

本文关键字:每一天 | 更新日期: 2023-09-27 18:22:02

可能重复:
如何在日期范围内循环?

有没有办法为特定月份的每一天做一个foreach循环?

思考类似的东西

foreach (DateTime date in DateTime.DaysInMonth(2012, 1))
{
}

每月的每一天

您可以很容易地编写一个辅助方法:

public static IEnumerable<DateTime> AllDatesInMonth(int year, int month)
{
    int days = DateTime.DaysInMonth(year, month);
    for (int day = 1; day <= days; day++)
    {
         yield return new DateTime(year, month, day);
    }
}

然后称之为:

foreach (DateTime date in AllDatesInMonth(2012, 1))

对于只做一次的事情来说,这可能有些过头了,但如果你经常这样做,它比使用for循环或类似的东西要好得多。它让你的代码说出你想要实现的目标,而不是你如何实现的机制

请尝试使用for循环。

for (int i = 1; i <= DateTime.DaysInMonth(year, month); i++)
{
  DateTime dt = new DateTime(year, month, i);
}

您可以使用范围:

Enumerable
    .Range(1, DateTime.DayInMonth(2012, 1)
    .Select(i => new DateTime(2012, 1, i)))
    .ToList() // ForEach is not a Linq to Sql method (thanks @Markus Jarderot)
    .ForEach(day => Console.Write(day));

你可以用一个简单的循环来完成:

DateTime first = new DateTime(2012, 1, 1);
for (DateTime current = first ; current.Month == first.Month ; current = current.AddDays(1)) {
}

生成天数的枚举非常容易。有一种方法

Enumerable.Range(1, DateTime.DaysInMonth(year, month)).Select(day =>
    new DateTime(year, month, day))