Вопрос по android, java – Как я могу получить шаблон даты и времени по умолчанию

8

Может кто-нибудь сказать мне, как я могу получить шаблон формата даты и времени по умолчанию (String) для указанной локали (или локали по умолчанию).

Что я уже нашел (может быть полезно для кого-то еще):

How to get default locale.

<code>Locale currentLocale= Locale.getDefault();
System.out.print(currentLocale.toString());

Result is "en_US"
</code>

How to get decimal separator.

<code>DecimalFormatSymbols decimalFormatSymbols =
                                     new DecimalFormatSymbols(currentLocale);
System.out.print(decimalFormatSymbols.getDecimalSeparator());

Result is "."
</code>

How to get the default Date and Time format pattern (String);

<code>(do something)
System.out.print(something);
And got at output something like this: "dd/mm/yyyy" or "hh:mm:ss".. 
                             or other values for specified locale.
</code>

Большое спасибо.

UPD: Найденное решение:

<code>SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
String dateLocalizedFormatPattern = simpleDateFormat.toLocalizedPattern();

The result of System.out.print(dateLocalizedFormatPattern) 
                                             on my device is "M/d/yy h:mm a".
</code>
проверьте мой ответ наstackoverflow.com/questions/10204291/… Khan

Ваш Ответ

2   ответа
3

Update

Как русский медведь упоминает в своем обновлении к вопросу, естьtoLocalizedPattern() метод вSimpleDateFormat который возвращает строку формата.

Original answer

SimpleDateFormatиспользует следующий код в своем личном конструкторе:

...
ResourceBundle r = LocaleData.getDateFormatData(loc);
if (!isGregorianCalendar()) {
    try {
        dateTimePatterns = r.getStringArray(getCalendarName() + ".DateTimePatterns");
    } catch (MissingResourceException e) {
    }
}
if (dateTimePatterns == null) {
    dateTimePatterns = r.getStringArray("DateTimePatterns");
}
...

Таким образом, фактические строки формата, кажется, находятся вResourceBundleдоступ черезLocaleData.getDateFormatData()метод.

К сожалениюLocaleDataкласс является частью внутреннегоsun.util.resources пакет.

Я думаю, вы могли бы сделатьdateLocalizedFormatPattern.split(" ")[0], но это будет работать только в том случае, если формат разделяет дату и время с пробелом. Я не знаю, существует ли общий способ получить только часть даты из формата даты.
Что если я просто хочу распечатать дату, скажем, частьM/d/yy без временной части, как в примере вывода:h:mm a?
Но я вижу, что вы нашли реальное решение, которое я пропустил в SimpleDateFormat :-)
Йохан, спасибо большое! Russian Bear
Ваш ответ привел меня к этому :-) Russian Bear
0

Я думаю, что вы хотите, чтобы использоватьDateFormat учебный класс. ПроверьтеgetDateInstance(int, Locale) метод.

Похожие вопросы