Die Funktion parse(String) der Klasse java.text.DateFormat verarbeitet standardmäßig auch unsinnige Datumsangaben. Hier ist ein kleines Beispiel, welches das Verhalten der Funktion demonstriert:
public class DateFormatTest {
public static void main(String[] args)
throws ParseException {
DateFormat dateFormat =
new SimpleDateFormat("dd-MM-yyyy");
// Thu Mar 01 00:00:00 CET 2007
System.out.println(dateFormat.parse("29-02-2007"));
// Fri Mar 02 00:00:00 CET 2007
System.out.println(dateFormat.parse("30-02-2007"));
// Sat Mar 03 00:00:00 CET 2007
System.out.println(dateFormat.parse("31-02-2007"));
// Sun Mar 04 00:00:00 CET 2007
System.out.println(dateFormat.parse("32-02-2007"));
dateFormat.setLenient(false);
// throws java.text.ParseException
System.out.println(dateFormat.parse("29-02-2007"));
}
}
Wie man dem Beispiel entnehmen kann, wird ein zu hoher Datumswert einfach auf den nächsten Monat übertragen. Dieser Modus lässt sich jedoch über den Aufruf von „setLenient(false)“ ausschalten.



Letzte Kommentare