SimpleDateFormat (String-Vorlage, Locale-Gebietsschema) mit beispielsweise Locale.US für ASCII-Daten

Lesezeit: 2 Minuten

Issue: SimpleDateFormat direkt ohne explizites Gebietsschema verwenden
Id: SimpleDateFormat

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Warum ist der “Um eine lokale Formatierung zu erhalten, verwenden Sie getDateInstance(), getDateTimeInstance() oder getTimeInstance() oder verwenden Sie das neue SimpleDateFormat(String-Vorlage, Gebietsschema) mit beispielsweise Locale.US für ASCII-Daten“Fehler in dieser Zeile.

http://developer.android.com/reference/java/text/SimpleDateFormat.html

  • Es ist eine Warnung, kein Fehler

    – Schwarzer Gürtel

    23. Juli 2013 um 10:38 Uhr

Um die Warnung zu entfernen, fügen Sie einfach Locale.getDefault() als zweites Argument hinzu, während Sie das Datumsformatobjekt instanziieren. Z.B.

 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
                    java.util.Locale.getDefault());

  • Danke für die Antwort!

    – Si8

    13. August 2013 um 14:41 Uhr

  • Was passiert, wenn ich diese Warnung ignoriere?

    – Deqing

    10. Dezember 2013 um 2:37 Uhr

  • @Deqing Wenn Sie dies dann auf einem Computer mit einem Gebietsschema eines anderen Landes ignorieren würden, enthält das vom Computer zurückgegebene Datum möglicherweise nicht die erwarteten Informationen, die Sie zurückgeben, um mit Ihrer formatierten Zeichenfolge übereinzustimmen. Ähnlich wie ‘,’ und ‘.’ Aufgrund der systemübergreifenden Notation von Zahlen kann die Zeit in verschiedenen Ländern auf unterschiedliche Weise dargestellt werden und möglicherweise mehr oder weniger Komponenten als erwartet enthalten. Durch die Angabe erhalten Sie sicher, wonach Sie fragen.

    – Jay Snayder

    14. Juli 2014 um 20:16 Uhr

Vorsicht bei getDefault da es möglicherweise nicht für alle Anwendungsfälle geeignet ist, insbesondere für maschinenlesbare Ausgaben. Von dem Dokumente:

Das Standardgebietsschema ist für eine maschinenlesbare Ausgabe nicht geeignet. Die beste Wahl ist dort meist Locale.US – dieses Locale ist garantiert auf allen Geräten verfügbar, und da es keine überraschenden Sonderfälle aufweist und häufig (insbesondere bei der Computer-Computer-Kommunikation) verwendet wird, ist es eher das auch die effizienteste Wahl.

  • Danke für den Hinweis!

    – kirtan403

    27. November 2016 um 11:33 Uhr

Es ist eine dumme Flusenwarnung. Wenn Sie sich den Quellcode des SimpleDateFormat-Konstruktors ansehen, erhält er das Standardgebietsschema.

public SimpleDateFormat(String pattern) {
    this(pattern, Locale.getDefault());
}

Das Hinzufügen zu Ihrem Code ist also überflüssig und unnötig ausführlich. Locale.getDefault() ist fast immer das, was Sie wollen, da das Gerät des Benutzers darauf eingestellt ist. Wenn Sie aus irgendeinem Grund immer “Montag” zurückgeben müssen, unabhängig davon, auf welche Sprache der Benutzer eingestellt ist, können Sie Locale.US angeben, aber das scheint eine seltene Situation zu sein.

Das Beste, was Sie tun können, ist, die dumme Inspektion zu deaktivieren.

1140890cookie-checkSimpleDateFormat (String-Vorlage, Locale-Gebietsschema) mit beispielsweise Locale.US für ASCII-Daten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy