Со дня дня номер получает название дня с Joda Time

У меня день недели: 2 (который должен совпадать со вторником, если неделя начнется в понедельник).

Из этого числа есть способ получить имя дня в Java, используя Joda Time? В javascript это было довольно легко сделать, используя moment.js:

moment().day(my number)

Ответы

Ответ 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]);

Ответ 2

Вы можете сделать это самостоятельно

String[] dayNames = new String[]{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
String name = dayNames[day-1];

И это даже не требует никакой библиотеки:)