Problem:
Parsen eines Datums- Die Zeitzeichenfolge mit SimpleDateFormat schlägt auf einem bestimmten Gerät fehl, was zu einem „nicht analysierbaren Datum“ führt. Fehler.
Analyse:
SimpleDateFormat erfordert einen Locale-Parameter, um die Sprache und kulturellen Konventionen für die Datumsanalyse anzugeben. Wenn kein Gebietsschema angegeben ist, wird das Standardgebietsschema des Systems verwendet. Dies kann zu Parsing-Inkonsistenzen auf Geräten mit unterschiedlichen Locale-Einstellungen führen.
Lösung:
Detaillierte Erklärung:
Die angegebene Datum-Uhrzeit-Zeichenfolge ( „24. Okt. 2016, 19:31 Uhr“) ist auf Englisch. Wenn das Standardgebietsschema des Systems jedoch nicht Englisch ist (z. B. im Fall eines französischen Telefons), kann die Standardinstanz von SimpleDateFormat es nicht analysieren.
Java 8 (DateTimeFormatter):
Verwenden Sie in Java 8 DateTimeFormatter mit einem expliziten Gebietsschema, um benutzerdefinierte Datums-/Uhrzeitzeichenfolgen zu analysieren. Vermeiden Sie die Verwendung der vordefinierten Formatierer, die keine Gebietsschemata akzeptieren. Zum Beispiel:
DateTimeFormatter dtf = new DateTimeFormatterBuilder() .parseCaseInsensitive() .appendPattern("d MMM uuuu h:m a") .toFormatter(Locale.ENGLISH); LocalDateTime ldt = LocalDateTime.parse(strDateTime, dtf);
Java 6/7 (ThreeTen-Backport):
Wenn Sie bei Java 6 oder Java 7 nicht weiterkommen, verwenden Sie ThreeTen-Backport zum Backportieren DateTimeFormatter-Funktionalität.
Zusätzlich Hinweise:
Das obige ist der detaillierte Inhalt vonWarum kann mein SimpleDateFormat Daten nicht analysieren und wie kann ich das Problem mithilfe von Locale und DateTimeFormatter beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!