Ich verwende java.text.SimpleDateFormat
, um Zeichenfolgen des Formulars "yyyyMMdd"
zu analysieren.Machen Sie SimpleDateFormat.parse() an ungültigen Daten fehl (z. B. Monat ist größer als 12)
Wenn ich versuche, eine Zeichenfolge mit einem Monat größer als 12 zu analysieren, anstatt zu versagen, wird das nächste Jahr angezeigt. Voll runnable Repro:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ParseDateTest {
public static void main(String[] args) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Date result = format.parse("20091504"); // <- should not be a valid date!
System.out.println(result); // prints Thu Mar 04 00:00:00 CST 2010
}
}
Ich hätte lieber eine ParseException
geworfen.
Gibt es eine nicht-hacky Art, die Ausnahme zu erzwingen ?. Ich meine, ich möchte nicht manuell überprüfen, ob der Monat größer als 12 ist. Das ist irgendwie lächerlich.
Danke für jeden Vorschlag.
HINWEIS: Ich weiß bereits über Joda Time, aber ich brauche dies in Plain JDK ohne externe Bibliotheken getan.
Vielen Dank. Das hat den Trick gemacht. Erstaunlich, wie das Stellen von Fragen hier Ergebnisse schneller als das Suchen auf Google gibt (oder ich lutsche beim Suchen :). –
+1 für den einen Liner. –
stackoverflow sollte Benutzern erlauben, mehr als 1 Punkt zu Antworten geben, und dies ist eine dieser Antworten. Ich habe vor dem Parsen mit SimpleDateFormat einige lächerliche Muster gefunden. Danke vielmals. –