Example #1
0
        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;
        }
Example #2
0
        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;
        }