Нумерация месяцев в джаве с нуля. Делаем (new GregorianCalendar(2008, 0, 0)).getActualMaximum(GregorianCalendar.DAY_OF_MONTH) = 31, всё ок, это Январь (new GregorianCalendar(2008, 1, 0)).getActualMaximum(GregorianCalendar.DAY_OF_MONTH) = 31 — а это уже февраль! (new GregorianCalendar(2008, 2, 0)).getActualMaximum(GregorianCalendar.DAY_OF_MONTH) = 29 — это верно для февраля. Т.е. у нас январь — 0 и 1, и дальше всё съезжает на единицу. Так и должно быть?