c#中的日期计算

时间:2014-06-24 14:00:02

标签: c# datetime

在我的应用程序(c#)中,我需要将n天添加到今天的日期。我知道我可以使用DateTime.AddDays(n)方法,这种方法可以正常工作。但在我的情况下,我想只添加工作日(或仅#34;星期一和#34;以及"星期五和#34;或任何其他组)。

可能存在任何默认方法来计算这种类型的逻辑。

测试数据:

日期:今天(2014年6月24日)。
添加天数:10
天数类型:营业日(Mn-Fr)
答案:2014年7月8日

2 个答案:

答案 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;
    }