Joda-Time
По крайней мере, это работает, хотя я считаю это не так приятно:
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
Вы можете использовать конкретный экземпляр перечисления непосредственно, а не magic number как 2
. Перечисление DayOfWeek
предоставляет экземпляр для каждого дня недели, например 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]);
Awesom е! Спасибо за этот полный ответ. – Odyssee