SimpleDateFormat analysiert „YYYY-MM-dd HH:mm“ falsch
Beim Versuch, eine Zeichenfolge im Format „YYYY-MM -dd HH:mm" zu einem Datum hinzufügen, stoßen einige Entwickler auf unerwartete Datumsergebnisse. Dies tritt auf, wenn die SimpleDateFormat-Klasse mit der Einstellung „Lenient“ auf „false“ verwendet wird.
Der folgende Codeausschnitt veranschaulicht das Problem:
<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>
Dieser Code erzeugt ein falsches Datum:
Sun Dec 30 08:30:00 EST 2012 (wrong)
Um dieses Problem zu beheben, überprüfen Sie, ob das im SimpleDateFormat-Muster angegebene Jahresformat Kleinbuchstaben „yyyy“ statt Großbuchstaben „YYYY“ ist.
<code class="java">SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);</code>
Durch diese Anpassung analysiert der Code die Zeichenfolge „JJJJ-MM-TT HH:mm“ korrekt. Weitere Informationen finden Sie in der SimpleDateFormat-Dokumentation.
Das obige ist der detaillierte Inhalt vonWarum analysiert SimpleDateFormat „JJJJ-MM-TT HH:mm“ falsch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!