Решения, данные до сих пор, расскажут вам 1, 2, 3, 4 или 5. Но в вопросе говорилось, что он хочет знать «последний» и «второй до последнего». Если спрашивающий действительно должен знать «последний» и т. Д., Есть немного дополнительной сложности. Вы должны выяснить, сколько воскресений в месяце, чтобы знать, является ли четвертое воскресенье последним. Первый способ понять, что происходит со мной, это:
GregorianCalendar gc=new GregorianCalendar();
gc.setTime(mydate);
gc.set(Calendar.DAY_OF_MONTH,1); // Roll back to first of month
int weekday=gc.get(Calendar.DAY_OF_WEEK); // day of week of first day
// Find day of month of first Sunday
int firstSunday;
if (weekday==Calendar.SUNDAY)
firstSunday=1;
else
firstSunday=weekday-Calendar.SUNDAY+6;
// Day of month of fifth Sunday, if it exists
int fifthSunday=firstSunday+7*4;
// Find last day of month
gc.add(Calendar.MONTH,1);
gc.add(Calendar.DATE,-1);
int lastDay=gc.get(DAY_OF_MONTH);
int sundays;
if (fifthSunday<lastDay)
sundays=4;
else
sundays=5;
Это похоже на большую работу. Кто-нибудь видит более легкий путь?