Frage an android, java – Wie erhalte ich das Standardformat für Datum und Uhrzeit?

8

Kann mir jemand sagen, wie ich das Standardformat für Datum und Uhrzeit (String) für das angegebene Gebietsschema (oder das Standardgebietsschema) ermitteln kann?

Was ich bereits gefunden habe (Kann für jemand anderen nützlich sein):

So erhalten Sie das Standardgebietsschema.

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

Result is "en_US"
</code>

So erhalten Sie ein Dezimaltrennzeichen.

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

Result is "."
</code>

So erhalten Sie das Standardformat für Datum und Uhrzeit (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>

Danke vielmals.

UPD: Gefundene Lösung:

<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>
Überprüfen Sie meine Antwort aufstackoverflow.com/questions/10204291/… Khan

Deine Antwort

2   die antwort
3

Aktualisieren

Wie Russian Bear in seiner Aktualisierung der Frage erwähnt, gibt es einetoLocalizedPattern() Methode inSimpleDateFormat das gibt die Formatzeichenfolge zurück.

Ursprüngliche Antwort

SimpleDateFormatverwendet den folgenden Code in seinem privaten Konstruktor:

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

Die eigentlichen Formatstrings scheinen also in a zu seinResourceBundlezugegriffen über dieLocaleData.getDateFormatData()Methode.

Leider ist dieLocaleDataKlasse ist ein Teil des Innerensun.util.resources Paket.

Was ist, wenn ich nur den Datumsteil ausdrucken möchte?M/d/yy ohne den Zeitteil, wie in der Beispielausgabe:h:mm a? Gelin Luo
Aber ich sehe, dass Sie die tatsächliche Lösung gefunden haben, die ich in SimpleDateFormat verpasst habe :-) Johan Kaving
Ich denke du könntest es tundateLocalizedFormatPattern.split(" ")[0]Das funktioniert aber nur, wenn das Format Datum und Uhrzeit durch ein Leerzeichen trennt. Ich weiß nicht, ob es eine generische Möglichkeit gibt, nur den Datumsteil aus einem Datumsformat abzurufen. Johan Kaving
Deine Antwort hat mich dazu geführt :-) Russian Bear
Johan, vielen Dank! Russian Bear
0

Ich denke, was Sie wollen, ist das zu verwendenDateFormat Klasse. Besuche diegetDateInstance(int, Locale) Methode.

Verwandte Fragen