Со дня номер недели получить название дня с 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