2013-05-30 2 views
2

Я создаю приложение для Android. У меня есть переменная GregorianCalendar. Я хочу получить дату из этой переменной как MM-dd-yyyy, если локаль - это США или dd-MM-yyyy, если локаль - это ЕС и так далее. Я не хочу жестко кодировать каждую строку локали, я хочу, чтобы она зависела от локали телефона.Строка даты из GregorianCalendar на основе locale

Проблема в том, что, просмотрев десятки подобных вопросов, я все еще не мог заставить это работать. Я предполагаю, что это две или три строки кода, возможно, используя SimpleDateFormat или GregorianCalendar.get() или getDisplayName().

Спасибо за помощь.

+0

только знать, в какой стране вы нацеливаетесь на языковой стандарт ЕС? –

+0

Извините, это была опечатка, она должна была быть RU. –

ответ

4

попробовать это

GregorianCalendar gc = ... 
    String str = DateFormat.getDateInstance(DateFormat.SHORT).format(gc.getTime()); 

КСТАТИ по умолчанию формат даты (SHORT) для США dd/MM/yy например 30/05/13

+0

Отлично, спасибо! –

2

Пробовали ли вы этот

DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, yourLocale); 
String formattedDate = df.format(yourcalender.getTime()); 

с yourcalender переменная GregorianCalendar

+1

Работает нормально. Я выбрал другой в качестве ответа, потому что не указывая языковой стандарт означает, что он автоматически использует систему по умолчанию, как мне было нужно. Благодаря! –

0

Еще лучше, почему бы не использовать предпочтительный формат даты пользователя? Locale.getLocale() возвращает предпочтительный язык пользователя, вы можете использовать его для форматирования всех ваших локализованных значений (даты, время, валюта и т. Д.) И знать, что вы предоставляете пользователю формат, который они выбрали.

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