我看过许多与将工作日(不包括周末)添加到日期参数相关的帖子,我尝试使用其中的一些。但是,我选择的所有解决方案在某些情况下都失败了。以下是我目前正在使用的代码:
private DateTime AddWorkingDays(DateTime dateValue, int noOfDays)
{
// determine if we are adding or subtracting the days
int nDirection = noOfDays < 0 ? -1 : 1;
// move ahead the day of week
int nWeekday = noOfDays % 5;
while (nWeekday != 0)
{
dateValue = dateValue.AddDays(nDirection);
if (dateValue.DayOfWeek != DayOfWeek.Saturday
&& dateValue.DayOfWeek != DayOfWeek.Sunday)
{
nWeekday -= nDirection;
}
}
// move ahead the number of weeks
int nDayweek = (noOfDays / 5) * 7;
dateValue = dateValue.AddDays(nDayweek);
return dateValue;
}
失败的示例场景:日期:2012 年 11 月 24 日(星期六),天数:5(或 10) 结果:2012 年 12 月 1 日(或 2012 年 12 月 8 日),预期结果为 2012 年 11 月 30 日 11 月 25 日失败, 2012 也是.. 和我猜的类似情况,输入日期在周末。
有人可以帮忙解决这种情况吗?或者提供更好的解决方案?
谢谢