Я хочу знать, какой сегодня день недели (понедельник, вторник ...) на местном языке пользователя. Например, «Лунди», «Марди» и т. Д., Если пользователь француз.
Я прочитал этот пост, но он возвращает только int, а не строку с днем на языке пользователя: как проще всего узнать текущий день недели в Android?
В более общем плане, как получить все дни недели и все месяцы года на языке пользователя?
Я думаю, что это возможно, так как, например, в повестке дня Google указаны дни и месяцы на местном языке пользователя.
Благодаря !!
java
android
date
localization
internationalization
Regis_AG
источник
источник
DateFormatSymbols.getInstance()
(хотя на данный момент это может дать тот же результат).Я знаю , что уже ответил , но кто ищет «Fri» , как это
для пт -
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);
Наслаждаться...
источник
Чтобы сделать вещи короче, вы можете использовать это:
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); }
источник
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
Объект указывает на человеческий язык , который будет использоваться в переводе, и задает культурные нормы, решать такие вопросы, как капитализация и пунктуации.Чтобы получить сегодняшнюю дату, используйте
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 );
О java.time
Java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытеснять неприятные старые устаревшие классы даты и времени , такие как
java.util.Date
,Calendar
, иSimpleDateFormat
.Проект Joda-Time , находящийся сейчас в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поищите в Stack Overflow множество примеров и объяснений. Спецификация - JSR 310 .
Где взять классы java.time?
источник
Попробуй это...
//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 + "");
В результате ...
счастливого кодирования .....
источник
Приносим извинения за поздний ответ, но это сработает правильно.
daytext=(textview)findviewById(R.id.day); Calender c=Calender.getInstance(); SimpleDateFormat sd=new SimpleDateFormat("EEEE"); String dayofweek=sd.format(c.getTime()); daytext.setText(dayofweek);
источник
Я просто использую это решение в Котлине:
var date : String = DateFormat.format("EEEE dd-MMM-yyyy HH:mm a" , Date()) as String
источник
Если вы используете ThreetenABP библиотеку даты Б.Т. Jake Warthon вы можете сделать:
на вашем
dayOfWeek
экземпляре. Больше на: https://github.com/JakeWharton/ThreeTenABP https://www.threeten.org/threetenbp/apidocs/org/threeten/bp/format/TextStyle.htmlисточник
//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);
источник
SimpleDateFormat
,Date
иCalendar
(также используемые в вопросе).