Вы можете попробовать установив Calendar
на один день за два месяца вперед, а затем вычитать один день:
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 2);
c.set(Calendar.DAY_OF_MONTH, 1);
c.add(Calendar.DATE, -1);
Date nextDate = c.getTime();
Как и другие уже отмечали, вы также можете просто добавить один месяц, и использовать Calendar.getActualMaximum()
для установки в последний день следующего месяца.
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 1);
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
Date nextDate = c.getTime();
почему 2 добавить в месяц?Зачем устанавливать 1 день месяца? – faszynski
Причиной этого является возможность вычитать один день и получить желаемую дату. «Календарь» позаботится о различиях по месяцам, високосным годам и тому подобным. –