Heim >Java >javaLernprogramm >Warum generiert SimpleDateFormat ein falsches Datum für die Zeichenfolge „JJJJ-MM-TT HH:mm'?

Warum generiert SimpleDateFormat ein falsches Datum für die Zeichenfolge „JJJJ-MM-TT HH:mm'?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-02 20:43:02466Durchsuche

Why Does SimpleDateFormat Generate an Incorrect Date for a

SimpleDateFormat generiert eine falsche Datums- und Uhrzeitangabe für die Zeichenfolge JJJJ-MM-TT HH:mm

Problem:

Das Parsen einer Zeichenfolge im Format „JJJJ-MM-TT HH:mm“ mit SimpleDateFormat ergibt ein unerwartetes Datum.

Beispiel:

<code class="java">Date newDate = null;
String dateTime = "2013-03-18 08:30";
SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd HH:mm", Locale.ENGLISH);
df.setLenient(false);
try {
    newDate = df.parse(dateTime);
} catch (ParseException e) {
    throw new InvalidInputException("Invalid date input.");
}</code>

Tatsächliches Ergebnis:

So, 30. Dezember 08:30:00 EST 2012

Erwartetes Ergebnis:

2013-03-18 08:30:00

Lösung:

Das Problem liegt in der SimpleDateFormat-Musterzeichenfolge. Der Formatbezeichner für das Jahr sollte „yyyy“ anstelle von „YYYY“ sein.

Korrigierter Code:

<code class="java">SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);</code>

Diese Änderung stellt sicher, dass das Jahr als geparst wird vierstelliges Jahr, passend zum erwarteten Format „JJJJ-MM-tt HH:mm“.

Das obige ist der detaillierte Inhalt vonWarum generiert SimpleDateFormat ein falsches Datum für die Zeichenfolge „JJJJ-MM-TT HH:mm'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn