В соответствии с условиями проблемы необходимо привести к имени таблицы и количеству дней недели (кроме воскресений) каждый месяц и год, который пользователь выбрал в поле со списком с именами и номерами от месяца года. Я нашел решение:Использование Calendar в java
public static List<String> getWeekDays(int year, int month)
{
List<String> weekDays = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
calendar.set(year, month, 1);
int max = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
while (--max >= 0)
{
switch (calendar.get(Calendar.DAY_OF_WEEK))
{
case Calendar.MONDAY:
weekDays.add("Пн#"+ Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
break;
case Calendar.TUESDAY:
weekDays.add("Вт#"+ Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
break;
case Calendar.WEDNESDAY:
weekDays.add("Ср#"+ Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
break;
case Calendar.THURSDAY:
weekDays.add("Чт#"+ Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
break;
case Calendar.FRIDAY:
weekDays.add("Пт#"+Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
break;
case Calendar.SATURDAY:
weekDays.add("Сб#"+ Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
break;
}
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
return weekDays;
}
но он отображает только текущий месяц. Попытка изменить его ежемесячно calendar.add (Calendar.MONTH, 1); но проявляет ерунду, что в ноябре 2015 года на 31 день и месяц начинается во вторник.
calendar.set(Calendar.YEAR, year);
System.out.println(" Date with month changed : " + sdfY.format(calendar.getTime()));
calendar.set(Calendar.MONTH, month-1);
System.out.println(" Date with month changed : " + sdfM.format(calendar.getTime()));
System.out.println(calendar.getFirstDayOfWeek());
calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());
В этой части отображается правильные данные в месяц в ноябре 2015 года, в первый день недели номер 2. Но цикл по какой-то причине начинает отсчет с понедельника 30.
for(int i = 0; i <= calendar.getActualMaximum(Calendar.DAY_OF_MONTH); i++)
{
switch (calendar.get(Calendar.DAY_OF_WEEK))
{
case Calendar.MONDAY:
weekDays.add("Пн#"
+ Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
break;
case Calendar.TUESDAY:
weekDays.add("Вт#"
+ Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
break;
case Calendar.WEDNESDAY:
weekDays.add("Ср#"
+ Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
break;
case Calendar.THURSDAY:
weekDays.add("Чт#"
+ Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
break;
case Calendar.FRIDAY:
weekDays.add("Пт#"
+ Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
break;
case Calendar.SATURDAY:
weekDays.add("Сб#"
+ Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
break;
}
calendar.add(Calendar.DAY_OF_MONTH, 1);
}