2015-06-02 4 views
0

У меня возникла странная проблема локализации дат. При запуске моего приложения на эмуляторе со шведским языком (sv) все работает нормально. Даты форматируются в соответствии с: YYYY-MM-DDЛокализация даты samsung galaxy

Однако, когда я бегу же приложения на дату через Samsung Galaxy S4 в конечном итоге, как: дд-мм-гггг

Locale.getDefault(). getLanguage() оценивает значение «sv» в обоих случаях.

Я использую следующий фрагмент кода, чтобы получить строку с датой

public static String getDateString(Date date) { 
     return android.text.format.DateFormat.getDateFormat(App.getContext()).format(date); 
    } 

Локализация работает хорошо, когда дело доходит до остальной части пользовательского интерфейса.

Любые идеи?

+0

В документации, в которой говорится: «В тех случаях, когда система не предоставляет подходящий шаблон, этот класс предлагает метод getBestDateTimePattern (Locale, String).: Здесь: http://developer.android.com/reference /android/text/format/DateFormat.html Также обратите внимание, что для Locale вы можете использовать это: 'Locale l = new Locale (" sv_SE ");' –

+0

Я уже сталкивался с такими проблемами, как вы, поэтому я обнаружил хороший класс util http://developer.android.com/reference/android/text/format/DateUtils.html – betorcs

+0

Спасибо за ваши комментарии. Я посмотрел на эти методы, но по-прежнему считаю поведение странным. Если мне нужно создать локаль, чтобы использовать метод форматирования, я все еще могу просто проверить язык и так что-то вроде 'If (Locale.getDefault(). GetLanguage(). Equals (" sv ")) return new SimpleDateFormat («yyyy-MM-dd»). format (date); ' В любом случае спасибо, я попытаюсь посмотреть класс Util или попытаюсь использовать getBestDateTimePattern –

ответ

1

Возможно иметь другой формат даты на двух устройствах с одним и тем же набором локалей.

В Android 4.x настройки параметров на устройстве позволяют пользователям устанавливать формат даты, который не является форматом даты по умолчанию для локали, выбранной на устройстве.

Опция доступна через; Настройки> Дата & время> Выберите Формат даты

enter image description here Это не просто выбор на устройствах Samsung, но также могут быть найдены на складе Android 4.x. Однако на Android 5.1 опция, похоже, была удалена.

+0

Спасибо! Это делает проблему менее (совсем не такой) странной. Если я найду какое-то очень общее решение, я отправлю его здесь. –

+0

@SvenPersson Рад, что это помогло. Если строка даты предназначена для отображения в пользовательском интерфейсе, лучше всего соблюдать настройки устройства. Если дата для хранения или передачи, вы можете принудительно форматировать строку с помощью SimpleDateFormat. Есть еще одна проблема? – BrentM

Смежные вопросы