Я попробовал код выше и не работал. Возвращенная дата будет как-то включать праздничные и выходные дни. Я также хочу проверить, чтобы возвращаемая дата была только в рабочие дни.
Итак, ниже мои модифицированные коды.
Как правило, он рассчитывает количество рабочих дней, которые будут добавлены, и, если дата окончания выпадает на праздничные / выходные дни, переносит дату на следующий день.
Обратите внимание, что предполагается, что дата начала не в выходные / праздничные дни.
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;
}