0

我已经找到了一种方法来为每月的每一天创建文件。

像这样:

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 day in AllDatesInMonth(DateTime.Now.Year, DateTime.Now.Month))
{
   //Blablabla
}

这些文件被命名为 1.xml,2.xml,...

现在我想知道的是做同样的事情,但周末(周六和周日)没有文件。

4

3 回答 3

2

代替:

yield return new DateTime(year, month, day);

和:

DateTime dt = new DateTime(year, month, day);
if(dt.DayOfWeek != DayOfWeek.Saturday && dt.DayOfWeek != DayOfWeek.Sunday)
    yield return dt;

当然,该方法必须重命名为AllWeekDaysInMonth,因为这改变了它的意图。我实际上更喜欢另一个答案。

于 2013-04-12T19:31:45.430 回答
2

将 linq 添加到方法的结果中

foreach (DateTime weekDay in AllDatesInMonth(...).Where(d=>d.DayOfWeek!= DayOfWeek.Saturday && d.DayOfWeek!=DayOfWEek.Sunday)){

...
}

这样,如果您需要对包含的日期(假期?)施加更多条件,那么您可以添加另一个 .Where

于 2013-04-12T19:32:55.120 回答
0

您可以使用相同的代码,只需将星期几的检查添加到 where 循环:

public static IEnumerable<DateTime> AllDatesInMonth(int year, int month)
        {
        int days = DateTime.DaysInMonth(year, month);

        for (int day = 1; day <= days; day++)
        {
            var dateToTest = new DateTime(year, month, day);
            if (dateToTest.DayOfWeek == DayOfWeek.Saturday || dateToTest.DayOfWeek == DayOfWeek.Sunday) continue;
            yield return dateToTest;
        }
    }
于 2013-04-12T19:36:55.827 回答