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!