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

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

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

moment().day(my number)

3 ответов


Joda Времени

по крайней мере это работает, хотя я считаю это не так красиво:

LocalDate date = new LocalDate();
date = date.withDayOfWeek(2);
System.out.println(DateTimeFormat.forPattern("EEEE").print(date));

к сожалению Joda Времени не предлагает перечисление на день недели (java.времени). Я не быстро нашел другой способ в огромном api. Возможно, некоторые эксперты Joda знают лучшее решение.

добавлено (благодаря @BasilBourque):

LocalDate date = new LocalDate();
date = date.withDayOfWeek(2);
System.out.println(date.dayOfWeek().getAsText());

java.время

на java.время (в JSR 310, Java 8 и более поздние версии), используйте DayOfWeek перечисление.

int day = 2;
System.out.println( DayOfWeek.of(2).getDisplayName(TextStyle.FULL, Locale.ENGLISH) );
// Output: Tuesday

вы можете использовать конкретный экземпляр enum напрямую, а не магическое число как 2. The 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]);

вы можете сделать это сами

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

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


используя Joda вы можете сделать это:

 DateTime curTime = new DateTime();
 curTime.dayOfWeek().getAsText(Locale.ENGLISH);

заменить Locale С любым вашим языком.

должен вернуть имя дня недели, например Monday or Tuesday