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