C#第3个工作日不包括Satuday和周日


private void btnDateTime_Click(object sender, EventArgs e) 
{
    DateTime trdCurrentMonth = DateTime.Today.AddDays(-(DateTime.Today.Day - 3));
    if (trdCurrentMonth != 
        DateTime.Today.AddDays(-(DateTime.Today.Day)) &&
        trdCurrentMonth != DateTime.Today.AddDays(-(DateTime.Today.Day - 1))) 
    {
        MessageBox.Show(trdCurrentMonth.ToString());
    }
}

我如何获得本月的第三个工作日,不包括星期六和周日?

在前10个日历日期中获得工作日,Skip 2在一个月内获得第三个工作日。

    DateTime dt = new DateTime(2016,6,1); // 1st Day of the Month.
    var thirdWorkingDay = Enumerable.Range(0,10)
        .Select(x=> dt.AddDays(x))
        .Where(x=> x.DayOfWeek != DayOfWeek.Sunday && x.DayOfWeek != DayOfWeek.Saturday)
        .Skip(2)
        .FirstOrDefault() ;

检查此Demo

我更喜欢您保留DayOfWeek的列表来代表假期(在这里星期六和周日)。我们可以轻松检查一天是星期六还是星期日。然后,第一行将找到本月的第一天,整整整整几天,直到我们找到第三天的工作日。现在考虑代码:

List<DayOfWeek> holydays = new List<DayOfWeek>() { DayOfWeek.Sunday, DayOfWeek.Saturday };
DateTime firstDayOfMonth = new DateTime(DateTime.Now.Date.Year, DateTime.Now.Date.Month, 1); // first day of month
int thirdDay = 1;
int addDay = 0;
while (thirdDay <= 3)
{
    if (!holydays.Contains(firstDayOfMonth.AddDays(addDay++).DayOfWeek))
    {
        thirdDay++;
    }
}
DateTime thirdWorkingDay = firstDayOfMonth.AddDays(--addDay);

这将给出

03/06/2016 for june - 2016
05/07/2016 for july- 2016

最新更新