Андроид: Как получить текущий день недели (понедельник и т. д.) На языке пользователя?
Я хочу знать, что текущий день недели (понедельник, вторник...) на локальном языке пользователя. Например, "Ланди", "Марди" и др... если пользователь французский.
Я прочитал этот пост, но он возвращает только int, а не строку с днем на языке пользователя:каков самый простой способ получить текущий день недели в Android?
в более общем плане, как вы получаете все дни недели и все месяцы года, написанные в язык пользователя ?
Я думаю, что это возможно, так как, например, повестка дня Google дает дни и месяцы, написанные на местном языке пользователя.
спасибо !!
8 ответов:
использовать SimpleDateFormat для форматирования даты и времени в удобочитаемую строку, в зависимости от локали пользователя.
небольшой пример, чтобы получить текущий день недели (например, "понедельник"):
SimpleDateFormat sdf = new SimpleDateFormat("EEEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d);
попробуйте это:
int dayOfWeek = date.get(Calendar.DAY_OF_WEEK); String weekday = new DateFormatSymbols().getShortWeekdays()[dayOfWeek];
чтобы сделать вещи короче, вы можете использовать это:
android.text.format.DateFormat.format("EEEE", date);который возвращает день недели в виде строки.
ее то, что я использовал, чтобы получить названия дней (
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 + "");результат...
удачи в кодировании.....
tl; dr
String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ) .getDayOfWeek() .getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;java.время
java.классы времени, встроенные в Java 8 и более поздние и back-ported to Java 6 & 7 и для Android включить пригодится
DayOfWeekперечисление.дни пронумерованы согласно стандартному определению ИСО 8601, 1-7 на понедельник-воскресенье.
DayOfWeek dow = DayOfWeek.of( 1 );это перечисление включает в себя
getDisplayNameметод для генерации строки локализованного переведенного имени объекта день.The
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 Времени
обновление: The Joda Времени, теперь режим обслуживания, советует миграция в java.время классы.
The Joda Времени библиотеки
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 );выход: Самеди
о java.время
The java.время фреймворк встроен в Java 8 и более поздние версии. Эти классы вытесняют беспокойных старых наследие классы даты и времени, такие как
java.util.Date,Calendar,&SimpleDateFormat.The Joda Времени, теперь режим обслуживания, советует миграция в java.время занятия.
чтобы узнать больше, смотрите Oracle Tutorial. Поиск переполнения стека для многих примеров и объяснений. Спецификация является JSR 310.
где получить java.время занятий?
- 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);

Comments