Ejemplo n.º 1
0
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();
    }
}
Ejemplo n.º 2
0
    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);
        }
    }