tl; dr
String output =
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.getDayOfWeek()
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
java.time
Классы java.time, встроенные в Java 8 и более поздние версии и перенесенные на Java 6 и 7 и Android, включают удобное DayOfWeek
перечисление.
Дни нумеруются в соответствии со стандартом ISO 8601: 1-7 для понедельника-воскресенья.
DayOfWeek dow = DayOfWeek.of( 1 );
Это перечисление включает getDisplayName
метод для генерации строки локализованного переведенного названия дня.
Locale
Объект указывает на человеческий язык , который будет использоваться в переводе, и задает культурные нормы, решать такие вопросы, как капитализация и пунктуации.
String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
Чтобы получить сегодняшнюю дату, используйте LocalDate
класс. Обратите внимание, что часовой пояс имеет решающее значение, поскольку в любой момент дата меняется по всему миру.
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
DayOfWeek dow = today.getDayOfWeek();
String output = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
Имейте в виду, что языковой стандарт не имеет ничего общего с часовым поясом. Это две разные ортогональные проблемы. Возможно, вам понадобится французская презентация даты и времени с зонированием в Индии ( Asia/Kolkata
).
Джода-Тайм
ОБНОВЛЕНИЕ: проект Joda-Time , находящийся теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Библиотека Joda-Time обеспечивает Locale
локализацию значений даты и времени на основе управления.
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zone );
Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter formatterUnJourQuébécois = DateTimeFormat.forPattern( "EEEE" ).withLocale( locale );
String output = formatterUnJourQuébécois.print( now );
System.out.println("output: " + output );
вывод: samedi
О java.time
Java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытеснять неприятные старые устаревшие классы даты и времени , такие как java.util.Date
, Calendar
, и SimpleDateFormat
.
Проект Joda-Time , находящийся сейчас в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поищите в Stack Overflow множество примеров и объяснений. Спецификация - JSR 310 .
Где взять классы java.time?
- Java SE 8 и SE 9 и новее
- Встроенный.
- Часть стандартного Java API со встроенной реализацией.
- В Java 9 добавлены некоторые незначительные функции и исправления.
- Java SE 6 и SE 7
- Большая часть функциональности java.time перенесена на Java 6 и 7 в ThreeTen-Backport .
- Android