Gibt es eine andere Art und Weise Standardmuster für ein bestimmtes Gebietsschema abzurufen?

StackOverflow https://stackoverflow.com/questions/3488652

  •  28-09-2019
  •  | 
  •  

Frage

Ist es möglich, ein Standardmuster für ein bestimmtes Gebietsschema abzurufen, ohne ein Objekt Gießen von DateFormat.get*Instance() zu einem SimpleDateFormat zurückgegeben?

Ich verstehe, dass in den meisten Fällen alles in Ordnung sein wird, aber es ist eine Notiz in javadoc,

So frage ich mich, was soll ich für den Fall, ich will " eine ungewöhnliche Begegnung "?

Verwandte Thema.

Codebeispiel:

/**
 * Returns '\n'-separated string with available patterns.
 * Optional adds appropriate language code to each pattern string.
 * 
 * @param showLanguage Defines if language info is required.
 * @return  String with available patterns, optional (if showLanguage is set
 * to "true") adds appropriate language code to each pattern.
 */
public String getPatternsForAvailableLocales(Boolean... showLanguage) {

    /* Array of available locales */
    Locale[] locales = DateFormat.getAvailableLocales();

    String result = "";

    for (Locale locale : locales) {

        /* Add language info, if necessary */
        if ((showLanguage.length > 0) && (showLanguage[0])) {
            result += locale.getLanguage() + '\t';
        }

        /* Retrieving pattern */ 
        try {
            result += ((SimpleDateFormat)
                    DateFormat.getDateTimeInstance(DateFormat.SHORT,
                            DateFormat.SHORT, locale)).toPattern();
        } catch (ClassCastException e) {
            // ******************************** //
            // What's up? Is there another way? //
            // ******************************** //
        }

        result += '\n';

    }
    return result;
}
War es hilfreich?

Lösung

Sie können das Datumsformat-Symbole für eine bestimmte Sprache abrufen, indem Sie den folgenden Java-Code ausführen:

System.out.println(DateFormatSymbols.getInstance
        (new Locale("en_US")).getLocalPatternChars());
System.out.println(DateFormatSymbols.getInstance
        (new Locale("nl_NL")).getLocalPatternChars());

In diesem speziellen Fall, Niederländisch, sind die Datumsformat-Symbole gleich.

GyMdkHmsSEDFwWahKzZ
GyMdkHmsSEDFwWahKzZ

Für den Fall, dass die Symbole für die Fremdsprache unterschiedlich sind, ersetzen Sie die Fremdsprache Zeichen für die englischen Zeichen im einfachen Format-String.

Die DateFormatSymbols Klasse ist seit mindestens Java 1.4.2 existiert.

Andere Tipps

Das Muster selbst ist einzigartig für Simple, weshalb Sie es sind zu werfen.

Wenn Sie eine Dateformat finden, das nicht ist Simple Sie die Ausnahme protokollieren möchten, die Aufzeichnung die Klasse die tatsächliche Umsetzung ist, und an diesem Punkt werden Sie genügend Informationen, um zu entscheiden, wie mit der Situation umgehen.

Für jetzt, da gibt es kein Muster nicht über diese eine in der Liste der Ergebnisse hinzufügen, wenn es nicht Simple ist.

Wenn ich fragen kann, warum kehren Sie eine verkettete Zeichenfolge anstelle einer Sammlung von Strings? Es scheint, es würde durch Ihre Ergebnisse Schleife einfacher sein.

Wenn der verketteten String wesentlich ist, verwendet String es zu bauen, da Sie weniger Objekte erstellen werden und die Leistung verbessern. Es ist eine gute Angewohnheit in seine beim Bau von Strings in einer Schleife.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top