public DateTime adjust(DateTime d, BusinessDayConv c) { if (d == null) throw new ArgumentException("null date"); if (c == BusinessDayConv.Unadjusted) return d; DateTime d1 = d; if (c == BusinessDayConv.Following || c == BusinessDayConv.ModifiedFollowing) { while (isHoliday(d1)) { d1 = d1.AddDays(1.0); } if (c == BusinessDayConv.ModifiedFollowing) { if (d1.Month != d.Month) return adjust(d, BusinessDayConv.Preceding); } } else if (c == BusinessDayConv.Preceding || c == BusinessDayConv.ModifiedPreceding) { while (isHoliday(d1)) { d1 = d1.AddDays(-1.0); } if (c == BusinessDayConv.ModifiedPreceding && d1.Month != d.Month) return adjust(d, BusinessDayConv.Following); } else { } return d1; }
public DateTime adjust(DateTime d,string period,BusinessDayConv c = BusinessDayConv.ModifiedFollowing) { if (d == null) throw new ArgumentException("null date"); if (c == BusinessDayConv.Unadjusted) return d; int multiple = Convert.ToInt32(period.Substring(0,period.Length - 1)); string periodString = (period != null) ? period.Substring(period.Length - 1, 1) : "M"; DateTime d1 = d; if ( periodString == "D") { d1 = d.AddDays(multiple); } else if (periodString == "M") { d1 = d.AddMonths(multiple); } else if (periodString == "Y") { d1 = d.AddYears(multiple); } if (c == BusinessDayConv.Following || c == BusinessDayConv.ModifiedFollowing) { while (isHoliday(d1)) { d1 = d1.AddDays(1.0); } if (c == BusinessDayConv.ModifiedFollowing) { if (d1.Month != d.Month) return adjust(d1, BusinessDayConv.Preceding); } } else if (c == BusinessDayConv.Preceding || c == BusinessDayConv.ModifiedPreceding) { while (isHoliday(d1)) { d1 = d1.AddDays(-1.0); } if (c == BusinessDayConv.ModifiedPreceding && d1.Month != d.Month) return adjust(d1, BusinessDayConv.Following); } else { } return d1; }