Ответ 1
Joda времени
По крайней мере, это работает, хотя я считаю это не очень приятным:
LocalDate date = new LocalDate();
date = date.withDayOfWeek(2);
System.out.println(DateTimeFormat.forPattern("EEEE").print(date));
К сожалению Joda-Time не предлагает перечисление для дня недели (java.time делает). Я не нашел другого пути в огромной апи. Возможно, некоторые эксперты Joda знают лучшее решение.
Добавлено (спасибо @BasilBourque):
LocalDate date = new LocalDate();
date = date.withDayOfWeek(2);
System.out.println(date.dayOfWeek().getAsText());
java.time
В java.time (JSR 310, Java 8 и выше), используйте DayOfWeek
enum.
int day = 2;
System.out.println( DayOfWeek.of(2).getDisplayName(TextStyle.FULL, Locale.ENGLISH) );
// Output: Tuesday
Вы можете использовать конкретный экземпляр enum напрямую, а не магический номер, например 2
. DayOfWeek
enum предоставляет экземпляр для каждого дня недели, например DayOfWeek.TUESDAY
.
System.out.println( DayOfWeek.TUESDAY.getDisplayName(TextStyle.FULL, Locale.ENGLISH) );
// Output: Tuesday
Старый JDK
Чтобы сделать это полным, здесь решение старого JDK:
int day = 2;
DateFormatSymbols dfs = DateFormatSymbols.getInstance(Locale.ENGLISH);
System.out.println(dfs.getWeekdays()[day % 7 + 1]);