在我的應用程序(c#)中,我需要將n
天添加到今天的日期。我知道我可以使用DateTime.AddDays(n)
方法,並且此方法正常工作。但在我的情況下,我只想添加工作日(或僅限「星期一」和「星期五」或任何其他套餐)。c中的日期計算#
也許存在任何默認方法來計算這種類型的邏輯。
測試數據:
Date:Today(24-jun-2014)。
天補充:10
日子類型:營業日(MN-FR)
答:8月2014
在我的應用程序(c#)中,我需要將n
天添加到今天的日期。我知道我可以使用DateTime.AddDays(n)
方法,並且此方法正常工作。但在我的情況下,我只想添加工作日(或僅限「星期一」和「星期五」或任何其他套餐)。c中的日期計算#
也許存在任何默認方法來計算這種類型的邏輯。
測試數據:
Date:Today(24-jun-2014)。
天補充:10
日子類型:營業日(MN-FR)
答:8月2014
你可以使用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)
。
我會做這種方式:
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;
}
,你遍歷要添加檢查對您的枚舉 –
有沒有內置的方法的日子裏,我會創造天的枚舉即可。 SO上有幾個答案來計算工作日。 –
@DStanley,感謝您的評論,但自定義天數(Fr-Sun)呢?也許問題不重複? – jimpanzer