public static DateTime SubtractBusinessDays(DateTime baseDate, int businessDaysToSubtract) { ParameterValidator.AssertIsNotMinOrMaxDate("baseDate", baseDate); ParameterValidator.AssertIsPositiveValue("businessDaysToSubtract", businessDaysToSubtract); DateTime result = baseDate; int daysSubtracted = 0; while (daysSubtracted < businessDaysToSubtract) { if (result == DateTime.MinValue) { string message = "Subtracting the specified number of days results in a value less than minimum allowable date value."; throw new InvalidOperationException(message); } else { result = result.AddDays(-1); if (IsWorkingDay(result)) { daysSubtracted++; } } } return(result); }
public static DateTime AddBusinessDays(DateTime baseDate, int businessDaysToAdd) { ParameterValidator.AssertIsNotMinOrMaxDate("baseDate", baseDate); ParameterValidator.AssertIsPositiveValue("businessDaysToAdd", businessDaysToAdd); DateTime result = baseDate; int daysAdded = 0; while (daysAdded < businessDaysToAdd) { if (result == DateTime.MaxValue) { string message = "Adding the specified number of days results in a value greater than the maximum allowable date value."; throw new InvalidOperationException(message); } else { result = result.AddDays(1); if (IsWorkingDay(result)) { daysAdded++; } } } return(result); }