Этот код ответит на ваш вопрос, предоставляя немного больше функциональности.Используя это, вы можете указать конкретный день недели, и он вернет первое вхождение указанного дня недели в следующем месяце.Это также позволяет избежать циклического просмотра и проверки каждый день, пока вы не найдете правильный.Я преобразовал это из некоторого отличного кода, с которым я в настоящее время работаю.Надеюсь, это поможет!
private static Date getNextMonthFirstWeekDayOccurence(Date date, int weekDay) {
//Get Calendar and move it to the first day of the next month
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + 1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
//Calculate the difference between the days of the week
int dayDifference = calendar.get(Calendar.DAY_OF_WEEK) - weekDay;
if (dayDifference < 0) { //Implies (calendar.get(Calendar.DAY_OF_WEEK) < weekDay)
calendar.add(Calendar.DAY_OF_MONTH, Math.abs(dayDifference));
} else if (dayDifference > 0) { //Implies (calendar.get(Calendar.DAY_OF_WEEK) > weekDay)
def daysToAdd = calendar.get(Calendar.DAY_OF_WEEK) - dayDifference;
calendar.add(Calendar.DAY_OF_MONTH, daysToAdd);
}
return calendar.getTime();
}