Author: fdesbois Date: 2010-01-13 18:58:31 +0100 (Wed, 13 Jan 2010) New Revision: 1738 Modified: trunk/src/main/java/org/nuiton/util/PeriodDates.java Log: Improve createMonthsPeriodFromToday to manage negative month value Modified: trunk/src/main/java/org/nuiton/util/PeriodDates.java =================================================================== --- trunk/src/main/java/org/nuiton/util/PeriodDates.java 2010-01-13 09:51:03 UTC (rev 1737) +++ trunk/src/main/java/org/nuiton/util/PeriodDates.java 2010-01-13 17:58:31 UTC (rev 1738) @@ -74,23 +74,53 @@ pattern = DateUtils.DEFAULT_PATTERN; } + /** + * Create a period from the date of today. If monthAfter is negative, the current day will be + * the thruDate of the period. The period extremities will be initialized (first day of month for + * fromDate and last day of month for thruDate) + * <pre> + * Ex 1 : + * Today = 12/05/2009 + * monthAfter = 5 + * Period = 01/05/2009 to 31/10/2009 + * Ex 2 : + * Today = 12/05/2009 + * monthAfter = -4 + * Period = 01/01/2009 to 31/05/2009 + * </pre> + * + * @param monthAfter the number of month from the current one + * @return a new PeriodDates + */ public static PeriodDates createMonthsPeriodFromToday(int monthAfter) { Calendar calendarFrom = new GregorianCalendar(); Calendar calendarThru = new GregorianCalendar(); - calendarFrom.set(Calendar.DAY_OF_MONTH, 1); +// calendarFrom.set(Calendar.DAY_OF_MONTH, 1); +// + + // Reset time calendarFrom.set(Calendar.AM_PM, Calendar.AM); calendarFrom.set(Calendar.HOUR, 0); calendarFrom.set(Calendar.MINUTE, 0); calendarFrom.set(Calendar.SECOND, 0); calendarFrom.set(Calendar.MILLISECOND, 0); - calendarThru.setTime(calendarFrom.getTime()); - calendarThru.add(Calendar.MONTH, monthAfter); - int maximum = calendarThru.getActualMaximum(Calendar.DAY_OF_MONTH); - calendarThru.set(Calendar.DAY_OF_MONTH, maximum); + if (monthAfter < 0) { + calendarFrom.add(Calendar.MONTH, monthAfter); + } else { + calendarThru.add(Calendar.MONTH, monthAfter); + } + + +// calendarThru.setTime(calendarFrom.getTime()); + +// int maximum = calendarThru.getActualMaximum(Calendar.DAY_OF_MONTH); +// calendarThru.set(Calendar.DAY_OF_MONTH, maximum); + PeriodDates period = new PeriodDates(calendarFrom, calendarThru); + period.initDayOfMonthExtremities(); period.setPattern(DateUtils.MONTH_PATTERN); return period; }
participants (1)
-
fdesbois@users.nuiton.org