Android: как получить текущий день недели (понедельник и т. Д.) На языке пользователя?

Я хочу знать, каков текущий день недели (понедельник, вторник …) на локальном языке пользователя. Например, «Lundi» «Mardi» и т. Д., Если пользователь является французским.

Я прочитал этот пост, но он возвращает только int, а не строку со словом на языке пользователя: какой самый простой способ получить текущий день недели в Android?

В более общем плане, как вы получаете все дни недели и все месяцы года, написанные на языке пользователя?

Я думаю, что это возможно, так как, например, в повестке дня Google указаны дни и месяцы, написанные на локальном языке пользователя.

Благодаря !!

Solutions Collecting From Web of "Android: как получить текущий день недели (понедельник и т. Д.) На языке пользователя?"

Используйте SimpleDateFormat для форматирования дат и времени в удобочитаемую строку, применительно к языку пользователя.

Небольшой пример, чтобы получить текущий день недели (например, «понедельник») :

SimpleDateFormat sdf = new SimpleDateFormat("EEEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d); 

Чтобы сделать вещи короче, вы можете использовать это:

 android.text.format.DateFormat.format("EEEE", date); 

Который вернет день недели в виде строки.

Попробуй это:

 int dayOfWeek = date.get(Calendar.DAY_OF_WEEK); String weekday = new DateFormatSymbols().getShortWeekdays()[dayOfWeek]; 

Hers's, что я использовал, чтобы получить имена дня ( 0-6 означает monday - sunday ):

 public static String getFullDayName(int day) { Calendar c = Calendar.getInstance(); // date doesn't matter - it has to be a Monday // I new that first August 2011 is one ;-) c.set(2011, 7, 1, 0, 0, 0); c.add(Calendar.DAY_OF_MONTH, day); return String.format("%tA", c); } public static String getShortDayName(int day) { Calendar c = Calendar.getInstance(); c.set(2011, 7, 1, 0, 0, 0); c.add(Calendar.DAY_OF_MONTH, day); return String.format("%ta", c); } 

Я знаю, что уже ответил, но кто ищет «Пт», как это

Для Пт –

 SimpleDateFormat sdf = new SimpleDateFormat("EEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d); 

И кто хочет полную строку даты, они могут использовать 4E в пятницу

В пятницу-

 SimpleDateFormat sdf = new SimpleDateFormat("EEEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d); 

Наслаждаться…

Попробуй это…

 //global declaration private TextView timeUpdate; Calendar calendar; ....... timeUpdate = (TextView) findViewById(R.id.timeUpdate); //initialize in onCreate() ....... //in onStart() calendar = Calendar.getInstance(); //date format is: "Date-Month-Year Hour:Minutes am/pm" SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy HH:mm a"); //Date and time String currentDate = sdf.format(calendar.getTime()); //Day of Name in full form like,"Saturday", or if you need the first three characters you have to put "EEE" in the date format and your result will be "Sat". SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE"); Date date = new Date(); String dayName = sdf_.format(date); timeUpdate.setText("" + dayName + " " + currentDate + ""); 

В результате … Введите описание изображения здесь

Счастливое кодирование …..

ТЛ; др

 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 времени

UPDATE: проект Joda-Time , теперь в режиме обслуживания , советует перейти на классы java.time .

Библиотека Joda-Time предоставляет локализованную локализацию значений даты и времени.

 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 . И поиск 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
    • Проект ThreeTenABP адаптирует ThreeTen-Backport (упомянутый выше) специально для Android.
    • См. Как использовать ThreeTenABP ….

Извините за поздний ответ. Но это будет работать правильно.

 daytext=(textview)findviewById(R.id.day); Calender c=Calender.getInstance(); SimpleDateFormat sd=new SimpleDateFormat("EEEE"); String dayofweek=sd.format(c.getTime()); daytext.setText(dayofweek);