Ich muss eine Zeichenfolge zu Jahr im Format "JJJJ" analysieren. Der Code-Snippet ich benutze, istParse eine Zeichenfolge bis zum Datum des Formulars "JJJJ"
try{
String strDate = "200323";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date dateStr = formatter.parse(strDate);
System.out.println("The year is " + dateStr);
}
catch(Exception e){
System.out.println("Date parse exception");
}
Das Problem ist, wenn ich einen String mit 4 Ziffern verwenden, „2003“ sagen, sein auf das Jahr analysiert und die Ausgabe wie erwartet „Das Jahr ist Mi 1. JANUAR 00: 00:00 GMT 2003 ". Aber wenn wir eine ungültige Zeichenkette von mehr als 4 Ziffern wie im obigen Snippet geben, sagen wir "200323", wird keine Parse-Exception geworfen, stattdessen akzeptiert sie den String-Wert und die Ausgabe wird angezeigt als "Das Jahr ist Mo Jan 01 00:00:00 GMT 200323 ". Kann irgendjemand eine Lösung vorschlagen, um das Problem zu lösen oder zumindest eine Parse-Ausnahme auszulösen? Ich habe sogar versucht, formatter.setLenient(false)
vor dem Parsen, aber es zeigte keine Wirkung. Jede Hilfe wird geschätzt. Danke im Voraus.
Warum übergeben Sie einfach die ersten 4 Zeichen der Zeichenfolge? Oder wenn die Länge mehr als 4 ist throw java.text.ParseException() –
'200323' ist ein gültiges Jahr. Sie können die Zeichenfolge abschneiden, wenn sie mehr als 4 Ziffern enthält. –
Ich denke, das Problem ist, dass der Formatierer das Jahr herausfindet. Sie müssen das Problem angehen, herauszufinden, was Sie für ein "gültiges Jahr" für Ihren Fall weitergeben müssen. Was sind die Fälle, die dies brechen könnten (ungültige Jahrzeichenfolgen)? Dann können Sie diese säubern und zum Formatieren übergeben –