【发布时间】:2014-04-14 13:02:23
【问题描述】:
以下代码计算要添加的工作日数,如果结束日期在节假日/周末,则将日期移到下一天。
但此代码假设开始日期为不在周末/节假日。
如果开始日期是周末/节假日,我想要也可以使用的代码。
请注意此代码由 ElenaSofea 于 2013 年 6 月 17 日,但由于我无法对此发表评论,因此这是一个新问题。
参考:How to add a number of days to a Date while skipping weekends and other holidays
static DateTime CalculateFutureDate(DateTime fromDate, int numberofWorkDays,
ICollection<DateTime> holidays)
{
var futureDate = fromDate;
for (var i = 0; i < numberofWorkDays; i++ )
{
if (futureDate.DayOfWeek == DayOfWeek.Saturday
|| futureDate.DayOfWeek == DayOfWeek.Sunday
|| (holidays != null && holidays.Contains(futureDate)))
{
futureDate = futureDate.AddDays(1);
numberofWorkDays++;
}
else
{
futureDate = futureDate.AddDays(1);
}
}
while(futureDate.DayOfWeek == DayOfWeek.Saturday
|| futureDate.DayOfWeek == DayOfWeek.Sunday
|| (holidays != null && holidays.Contains(futureDate)))
{
futureDate = futureDate.AddDays(1);
}
return futureDate;
}
【问题讨论】:
-
你真的应该看看jollyday.sourceforge.net
-
这不是 Java 问题。我将其重新标记为 C#,因为您复制的源代码来自带有 C# 标记的帖子。