Heim >Java >javaLernprogramm >Warum löst mein Java SimpleDateFormat-Code den Fehler „Unparseable Date' aus und wie kann ich ihn beheben?
Im Bereich der Java-Programmierung hat die Klasse SimpleDateFormat stellte oft eine Herausforderung dar, insbesondere bei der Datumsanalyse. Der rätselhafte Fehler „java.text.ParseException: Unparseable date“ kann Entwickler verwirrt und frustriert zurücklassen.
Um dieses Rätsel zu lösen, gehen wir der Fehlerursache auf den Grund . Wie der Name schon sagt, erwartet SimpleDateFormat beim Parsen eines Datums die Angabe eines Gebietsschemas. Standardmäßig wird das Gebietsschema des Systems angenommen, das möglicherweise nicht immer mit dem gewünschten Format übereinstimmt. Diese Nichtübereinstimmung kann zu dem gefürchteten Fehler führen.
Die Lösung liegt in der expliziten Bereitstellung eines Gebietsschemas für den SimpleDateFormat-Konstruktor. Durch die Angabe des entsprechenden Gebietsschemas stellen Sie sicher, dass das Datum gemäß den gewünschten kulturellen Konventionen analysiert wird.
Die Frage verdeutlicht die Diskrepanz zwischen der Analyse eines Datums in einem Android-Emulator und auf einem tatsächlichen Gerät. Dieser Unterschied ergibt sich aus der Tatsache, dass der Emulator normalerweise unter dem englischen Gebietsschema läuft, während echte Geräte häufig das systemspezifische Gebietsschema verwenden.
Um dieses Problem zu beheben, können Sie entweder das festlegen Stellen Sie das Standardgebietsschema in Ihrer gesamten Anwendung auf Englisch ein oder geben Sie Locale.ENGLISH explizit im SimpleDateFormat an Konstruktor.
Während SimpleDateFormat seinen Zweck erfüllt hat, ist es wichtig zu beachten, dass Java 8 führte eine modernere und robustere Datum-Uhrzeit-API ein, java.time. Diese API bietet nicht nur eine breite Palette von Datums-/Uhrzeitklassen, sondern beseitigt auch die mit dem Gebietsschema verbundenen Fallstricke von SimpleDateFormat.
Zum Beispiel bietet die DateTimeFormatter-Klasse in java.time eine konsistente und anpassbare Möglichkeit, Daten zu analysieren und zu formatieren. Es entfällt die Notwendigkeit, ein Gebietsschema explizit anzugeben, da automatisch das Gebietsschema der JVM als Standard verwendet wird.
<br>import java.time.LocalDateTime;<br>import java.time.format.DateTimeFormatter;</p> <p>öffentliche Klasse Main {</p> <pre class="brush:php;toolbar:false">public static void main(String[] args) { String strDateTime = "24 Oct 2016 7:31 pm"; DateTimeFormatter dtf = DateTimeFormatter.<em>ofPattern</em>("d MMM uuuu h:m a"); LocalDateTime ldt = LocalDateTime.<em>parse</em>(strDateTime, dtf); System.out.println(ldt); }
}
Ausgabe: p>
<br>2016-10-24T19:31<br>
In dieser Demo erstellt die Methode DateTimeFormatter.ofPattern einen DateTimeFormatter mit dem gewünschten Muster und dem Standardgebietsschema. Die LocalDateTime.parse-Methode verwendet diesen Formatierer, um die Datums-/Uhrzeitzeichenfolge erfolgreich zu analysieren.
Durch die explizite Angabe eines Gebietsschemas oder den Übergang zu java.time können Sie das „Nicht analysierbare Datum“ effektiv beheben. Fehler im SimpleDateFormat. Durch die Einführung von java.time werden nicht nur Ihre Möglichkeiten zur Datums-/Uhrzeitverarbeitung verbessert, sondern auch Ihr Code an die Best Practices des modernen Java angepasst.
Das obige ist der detaillierte Inhalt vonWarum löst mein Java SimpleDateFormat-Code den Fehler „Unparseable Date' aus und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!