Я немного борюсь с этим.
Я хочу настроить свой календарь, чтобы сказать: Третий понедельник февраля 2012 года. И я не нашел способа сделать это с помощью Java.
Например, если бы я хотел установить календарь на Рождество 2011 года, я могу сделать это легко:
Calendar when = Calendar.getInstance();
when.set (Calendar.MONTH, Calendar.DECEMBER);
when.set (Calendar.DAY_OF_MONTH, 25)
when.set (Calendar.YEAR, 2011);
Но я теряюсь относительно того, как настроить его для того, чтобы сказать "День памяти 2012", который является последним понедельником мая. Это мой код, но это явно неправильно, потому что я просто не могу предположить, что последний понедельник мая будет на 4-й неделе мая того же года:
Calendar when = Calendar.getInstance ();
when.set (Calendar.DAY_OF_WEEK,Calendar.MONDAY);
when.set (Calendar.MONTH, Calendar.MAY);
when.set (Calendar.WEEK_OF_MONTH, 4)
when.set (Calendar.YEAR, 2012);
Любые предложения относительно того, как я могу программно узнать, в какую неделю мая 2012 года (в примере выше) последний понедельник? Предполагая, что я могу получить эту информацию, я должен получить код выше, чтобы работать.
Мне нужно что-то, что в основном будет работать для любых других примеров. То, что может дать точный день для тех же сценариев. Примеры:
Какая дата:
- 3-й четверг мая 2015 года
- 1-й понедельник июня 2050 года.
- Четвертый вторник декабря 2012 года.
- 2-я среда июля 2000 года
Мне действительно нужно это для моего проекта, и я уверен, что это просто, но я ломаю голову на этом без каких-либо реальных результатов, чтобы показать:) И также не мог найти ничего в сети.
Добавлено:
Хорошо, это я получил в последний понедельник месяца:
when.set (GregorianCalendar.MONTH, GregorianCalendar.MAY);
when.set (GregorianCalendar.DAY_OF_WEEK, Calendar.MONDAY);
when.set (GregorianCalendar.DAY_OF_WEEK_IN_MONTH, -1);
when.set (Calendar.YEAR, 2012);
Но я не уверен, как мне заняться, например, секундами в понедельник в том же месяце, вроде этого?
when.set (GregorianCalendar.DAY_OF_WEEK_IN_MONTH, 2);
Любые предложения?