Pytanie w sprawie java, android – Jak mogę uzyskać domyślny wzór formatu daty i godziny

8

Czy ktoś mógłby mi powiedzieć, jak mogę uzyskać domyślny wzorzec formatu daty i godziny (String) dla określonych ustawień narodowych (lub domyślnych ustawień regionalnych).

Co już znalazłem (może być przydatne dla kogoś innego):

Jak uzyskać domyślne ustawienia regionalne.

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

Result is "en_US"
</code>

Jak uzyskać separator dziesiętny.

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

Result is "."
</code>

Jak uzyskać domyślny wzorzec formatu daty i godziny (ciąg);

<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>

Wielkie dzięki.

UPD: Znalezione rozwiązanie:

<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>
sprawdź moją odpowiedź podaną wstackoverflow.com/questions/10204291/… Khan

Twoja odpowiedź

2   odpowiedź
0

DateFormat klasa. SprawdźgetDateInstance(int, Locale) metoda.

3

Aktualizacja

Jak rosyjski niedźwiedź wspomina w swojej aktualizacji na pytanie, jesttoLocalizedPattern() metoda wSimpleDateFormat który zwraca łańcuch formatu.

Oryginalna odpowiedź

SimpleDateFormatużywa następującego kodu w prywatnym konstruktorze:

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

Tak więc rzeczywiste ciągi formatu wydają się być w aResourceBundledostęp przezLocaleData.getDateFormatData()metoda.

NiestetyLocaleDataklasa jest częścią wewnętrznegosun.util.resources pakiet.

Ale widzę, że znalazłeś rzeczywiste rozwiązanie, którego brakowało mi w SimpleDateFormat :-) Johan Kaving
Twoja odpowiedź doprowadziła mnie do tego :-) Russian Bear
Co jeśli chcę wydrukować tylko część datyM/d/yy bez części czasowej, tak jak w przykładzie wyjściowym:h:mm a? Gelin Luo
Johan, wielkie dzięki! Russian Bear
Chyba mógłbyś to zrobićdateLocalizedFormatPattern.split(" ")[0], ale działa to tylko wtedy, gdy format oddziela datę i część czasu spacją. Nie wiem, czy istnieje ogólny sposób na uzyskanie tylko części daty z formatu daty. Johan Kaving

Powiązane pytania