#android #date #localization
#Android #Дата #локализация
Вопрос:
Я пытаюсь получить строку даты с сокращенной формой дня недели и месяца в дополнение к дню месяца.
Например, пользователь с английским языком увидит:
Вт, 17 июня
и пользователь с немецким языком увидит:
Di. 17 Juni
Я просматривал android.text.format.DateFormat
документы, и getBestDateTimePattern(Locale locale, String skeleton)
казалось, что это может сработать, но для этого требуется API 18 , поэтому я не могу его использовать.
Есть ли способ получить такой короткий формат, основанный на текущей локали пользователя?
Ответ №1:
Хорошо, я думаю, что я наконец понял это:
int flags = DateUtils.FORMAT_SHOW_DATE |
DateUtils.FORMAT_NO_YEAR |
DateUtils.FORMAT_ABBREV_ALL |
DateUtils.FORMAT_SHOW_WEEKDAY;
dateTextView.setText(DateUtils.formatDateTime(this, millis, flags));
Для английской локали вы получаете:
Ср., 18 июня
а для немецкого языка вы получаете:
Mi., 18. Juni
а для французского языка вы получаете:
mer. 18 juin
Ответ №2:
Вы должны использовать getMeduimDateFormat(Context)
, это соответствует текущей локали и предпочтениям пользователя.
Комментарии:
1. Спасибо за вашу помощь. Это было близко, но не совсем то, что я искал.
Ответ №3:
попробуйте приведенный ниже код:-
public class DateFormatDemoSO {
public static void main(String args[]) {
int style = DateFormat.MEDIUM;
//Also try with style = DateFormat.FULL and DateFormat.SHORT
Date date = new Date();
DateFormat df;
df = DateFormat.getDateInstance(style, Locale.UK);
System.out.println("United Kingdom: " df.format(date));
df = DateFormat.getDateInstance(style, Locale.US);
System.out.println("USA: " df.format(date));
df = DateFormat.getDateInstance(style, Locale.FRANCE);
System.out.println("France: " df.format(date));
df = DateFormat.getDateInstance(style, Locale.ITALY);
System.out.println("Italy: " df.format(date));
df = DateFormat.getDateInstance(style, Locale.JAPAN);
System.out.println("Japan: " df.format(date));
}
}
для получения дополнительной информации смотрите ссылку ниже :-
http://www.java2s.com/Code/Java/Data-Type/DateFormatwithLocale.htm
Комментарии:
1. Спасибо за ваш ответ. Однако эти строки даты были слишком длинными.
Ответ №4:
Joda-Время
Используйте библиотеку Joda-Time.
DateTimeFormatter formatter = DateTimeFormat.forStyle( "S-" ).withLocale( java.util.Locale.getDefault() ); // "S" for short date format. "-" to suppress the time portion. Specify locale for cultural rules about how to format a String representation.
DateTime dateTime = new DateTime( someDateObject, DateTimeZone.getDefault() ); // Convert a java.util.Date object to an org.joda.time.DateTime object. Specify time zone to assign to DateTime.
String output = formatter.print( dateTime ); // Generate String representation of date-time value.
Комментарии:
1. Привет, Бэзил, спасибо за ваш ответ. Мне действительно нужно изучить время Joda, поскольку я продолжаю много слышать об этом, но на данный момент я решил проблему в ответе, который я опубликовал.