Как получить выбранный пользователем формат даты в Android? - PullRequest
14 голосов
/ 08 августа 2011

Я работал над проблемой формата даты, выбранного пользователями в телефоне Android. Я рассмотрел почти все вопросы и ответы на стеке и не получил идеального ответа. Например:- Я выбрал формат даты в телефоне "Сб, 31 декабря 2011" Но когда я использовал как основанный вопрос, ответил на stackoverflow: -

DateFormat df = android.text.format.DateFormat.getDateFormat(context.getApplicationContext());
tv.setText(df.format(date));

Приведенный выше код возвращает мне формат 06.08.2011 (мм / дд / гггг). Но посмотрите формат даты, который я выбрал на телефоне. Как я могу получить точный формат?

Ответы [ 3 ]

31 голосов
/ 08 августа 2011

В приложении, которое я сейчас разрабатываю, я использую следующее, которое, я думаю, сделает то, что вам нужно

final String format = Settings.System.getString(getContentResolver(), Settings.System.DATE_FORMAT);
if (TextUtils.isEmpty(format)) {
  dateFormat = android.text.format.DateFormat.getMediumDateFormat(getApplicationContext());
} else {
  dateFormat = new SimpleDateFormat(format);
}
4 голосов
/ 08 августа 2011

DateFormat.getDateFormat работает как положено.Он возвращает один из трех возможных форматов:

  1. MM/DD/YYYY
  2. DD/MM/YYYY
  3. YYYY/MM/DD

ЯЯ не знаю, как установить свой формат "Сб, 31 декабря 2011" , но насколько я знаю, в стандартном Android можно установить только один из трех упомянутых форматов (Настройки -> Дата и время -> Выбрать формат даты).

enter image description here

2 голосов
/ 30 сентября 2013

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

Date inDate = inFormat.parse(in);
DateFormat outFormat = android.text.format.DateFormat.getDateFormat(context);
out=outFormat.format(inDate);
...