在我的应用程序(c#)中,我需要将n
天添加到今天的日期。我知道我可以使用DateTime.AddDays(n)
方法,这种方法可以正常工作。但在我的情况下,我想只添加工作日(或仅#34;星期一和#34;以及"星期五和#34;或任何其他组)。
可能存在任何默认方法来计算这种类型的逻辑。
测试数据:
日期:今天(2014年6月24日)。
添加天数:10
天数类型:营业日(Mn-Fr)
答案:2014年7月8日
答案 0 :(得分:3)
您可以使用LINQ:
DayOfWeek[] weekEnd = { DayOfWeek.Saturday, DayOfWeek.Sunday };
DateTime end = Enumerable.Range(0, int.MaxValue)
.Select(i => DateTime.Today.AddDays(i))
.Where(d => !weekEnd.Contains(d.DayOfWeek))
.Take(10)
.Last();
然而,它返回07/07,我假设因为它包括今天。我不知道是否需要它。如果您今天不想包括,请将Range(0, int.MaxValue)
更改为Range(1, int.MaxValue)
。
答案 1 :(得分:1)
我会这样做:
public static DateTime AddBusinessDays(this DateTime source, int daysToAdd, params DayOfWeek[] workdays)
{
if (daysToAdd <= 0)
return source;
var current = source;
while (daysToAdd > 0)
{
current = current.AddDays(1);
if (workdays.Contains(current.DayOfWeek))
daysToAdd--;
}
return current;
}