@Override public List<Period> generateRollingPeriods( DateTimeUnit dateTimeUnit, Calendar calendar ) { dateTimeUnit.setDay( 1 ); DateTimeUnit iterationDateTimeUnit = calendar.minusMonths( dateTimeUnit, 9 ); List<Period> periods = Lists.newArrayList(); for ( int i = 0; i < 4; i++ ) { periods.add( createPeriod( iterationDateTimeUnit, calendar ) ); iterationDateTimeUnit = calendar.plusMonths( iterationDateTimeUnit, 3 ); } return periods; }
/** * Generates the last 12 months where the last one is the month which the * given date is inside. */ @Override public List<Period> generateRollingPeriods( DateTimeUnit dateTimeUnit, Calendar calendar ) { dateTimeUnit.setDay( 1 ); DateTimeUnit iterationDateTimeUnit = calendar.minusMonths( dateTimeUnit, 11 ); List<Period> periods = Lists.newArrayList(); for ( int i = 0; i < 12; i++ ) { periods.add( createPeriod( iterationDateTimeUnit, calendar ) ); iterationDateTimeUnit = calendar.plusMonths( iterationDateTimeUnit, 1 ); } return periods; }
@Override public Date getRewindedDate( Date date, Integer rewindedPeriods ) { Calendar cal = getCalendar(); date = date != null ? date : new Date(); rewindedPeriods = rewindedPeriods != null ? rewindedPeriods : 1; DateTimeUnit dateTimeUnit = createLocalDateUnitInstance( date ); dateTimeUnit = cal.minusMonths( dateTimeUnit, rewindedPeriods * 3 ); return cal.toIso( dateTimeUnit ).toJdkDate(); } }
@Override public Date getRewindedDate( Date date, Integer rewindedPeriods ) { Calendar cal = getCalendar(); date = date != null ? date : new Date(); rewindedPeriods = rewindedPeriods != null ? rewindedPeriods : 1; DateTimeUnit dateTimeUnit = createLocalDateUnitInstance( date ); cal.minusMonths( dateTimeUnit, rewindedPeriods * 6 ); return cal.toIso( dateTimeUnit ).toJdkDate(); } }
/** * Generates the last 6 bi-months where the last one is the bi-month * which the given date is inside. */ @Override public List<Period> generateRollingPeriods( DateTimeUnit dateTimeUnit, Calendar calendar ) { dateTimeUnit.setDay( 1 ); DateTimeUnit iterationDateTimeUnit = calendar.minusMonths( dateTimeUnit, (dateTimeUnit.getMonth() % 2) + 10 ); List<Period> periods = Lists.newArrayList(); for ( int i = 0; i < 6; i++ ) { periods.add( createPeriod( iterationDateTimeUnit, calendar ) ); iterationDateTimeUnit = calendar.plusMonths( iterationDateTimeUnit, 2 ); } return periods; }
@Override public Date getRewindedDate( Date date, Integer rewindedPeriods ) { Calendar cal = getCalendar(); date = date != null ? date : new Date(); rewindedPeriods = rewindedPeriods != null ? rewindedPeriods : 1; DateTimeUnit dateTimeUnit = cal.fromIso( DateTimeUnit.fromJdkDate( date ) ); dateTimeUnit = cal.minusMonths( dateTimeUnit, rewindedPeriods ); return cal.toIso( dateTimeUnit ).toJdkDate(); }
@Override public Date getRewindedDate( Date date, Integer rewindedPeriods ) { Calendar cal = getCalendar(); date = date != null ? date : new Date(); rewindedPeriods = rewindedPeriods != null ? rewindedPeriods : 1; DateTimeUnit dateTimeUnit = cal.fromIso( DateTimeUnit.fromJdkDate( date ) ); dateTimeUnit = cal.minusMonths( dateTimeUnit, rewindedPeriods ); return cal.toIso( dateTimeUnit ).toJdkDate(); } }
/** * Subtracts the given amount of time to the given calendar field. * * @param field the calendar field. * @param amount the amount of time. */ public Cal subtract( int field, int amount ) { switch ( field ) { case Calendar.YEAR: dateTimeUnit = getCalendar().minusYears( dateTimeUnit, amount ); case Calendar.MONTH: dateTimeUnit = getCalendar().minusMonths( dateTimeUnit, amount ); case Calendar.DAY_OF_MONTH: case Calendar.DAY_OF_YEAR: dateTimeUnit = getCalendar().minusDays( dateTimeUnit, amount ); break; default: throw new UnsupportedOperationException(); } return this; }