Подтвердить что ты не робот

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

Я хочу знать, каков текущий день недели (понедельник, вторник...) на локальном языке пользователя. Например, "Лунди" "Марди" и т.д., Если пользователь является французским.

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

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

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

Спасибо!

4b9b3361

Ответ 1

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

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

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

Ответ 2

Попробуйте следующее:

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

Ответ 3

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

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

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

Ответ 4

Я уже знаю, но кто ищет 'Fri', как это

для Fri -

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

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

В пятницу -

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

Enjoy...

Ответ 5

У меня есть то, что я использовал для получения имен дней (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);
}

Ответ 6

Попробуйте это...

//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 + "");

В результате... enter image description here

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

Ответ 7

TL;DR

String output = 
    LocalDate.now( ZoneId.of( "America/Montreal" ) )
             .getDayOfWeek()
             .getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;

java.time

Классы java.time, встроенные в Java 8 и более поздние версии, и back-ported на Java 6 и 7 и для Android включает удобный DayOfWeek enum.

Дни пронумерованы в соответствии со стандартом 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 проект, теперь в обслуживание mode, советуем перейти к классам java.time.

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

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 и более поздних версий. Эти классы вытесняют неприятные старые legacy классы времени, такие как java.util.Date, Calendar и SimpleDateFormat.

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

Чтобы узнать больше, см. Учебник Oracle. И поиск Qaru для многих примеров и объяснений. Спецификация 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

Ответ 8

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

daytext=(textview)findviewById(R.id.day);

Calender c=Calender.getInstance();
SimpleDateFormat sd=new SimpleDateFormat("EEEE");
String dayofweek=sd.format(c.getTime());


daytext.setText(dayofweek);

Ответ 9

//selected date from calender
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy"); //Date and time
String currentDate = sdf.format(myCalendar.getTime());

//selcted_day name
SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE");
String dayofweek=sdf_.format(myCalendar.getTime());
current_date.setText(currentDate);
lbl_current_date.setText(dayofweek);

Log.e("dayname", dayofweek);

Ответ 10

    //selected date from calender
    SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy"); //Date and time
    String currentDate = sdf.format(myCalendar.getTime());

    //selcted_day name
    SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE");
    String dayofweek=sdf_.format(myCalendar.getTime());
    current_date.setText( currentDate);
    lbl_current_date.setText(dayofweek);
    Log.e("dayname",dayofweek);