void myDate::nextDay() { // increment day of week and date of month m_day_of_week++; m_date_of_month++; if ( isEndOfWeek() ) { beginNewWeek(); } if ( isEndOfMonth() ) { nextMonth(); } if ( isEndOfYear() ) { nextYear(); } }
Date Calendar::advance(const Date& d, Integer n, TimeUnit unit, BusinessDayConvention c, bool endOfMonth) const { QL_REQUIRE(d!=Date(), "null date"); if (n == 0) { return adjust(d,c); } else if (unit == Days) { Date d1 = d; if (n > 0) { while (n > 0) { d1++; while (isHoliday(d1)) d1++; n--; } } else { while (n < 0) { d1--; while(isHoliday(d1)) d1--; n++; } } return d1; } else if (unit == Weeks) { Date d1 = d + n*unit; return adjust(d1,c); } else { Date d1 = d + n*unit; // we are sure the unit is Months or Years if (endOfMonth && isEndOfMonth(d)) return Calendar::endOfMonth(d1); return adjust(d1, c); } }