Предположим, что в настоящее время дата 28 мая. Если я вызываю следующие команды для того, чтобы вывод стал
cal.add(Calendar.DATE, 1); // Day = 29
cal.add(Calendar.DATE, 1); // Day = 30
cal.add(Calendar.DATE, 1); // Day = 31
cal.add(Calendar.DATE, 1); // Day = 31
cal.add(Calendar.DATE, -1); // Day = 29
Почему это не прыгает в следующем месяце? И почему он застревает на 31-м (но когда вы минус один, он прыгает на 29)?