21 lines
1.2 KiB
Plaintext
21 lines
1.2 KiB
Plaintext
|
Ich: Ich benutze das Java simple Date format und wenn ich den 31.02.2023 eingebe, wird kein fehler geworfen
|
||
|
|
||
|
ChatGPT:
|
||
|
Das Verhalten des `SimpleDateFormat` in Java hängt von seiner Toleranz gegenüber ungültigen Datumsangaben ab. Standardmäßig versucht es, das eingegebene Datum auf ein gültiges Datum anzupassen, anstatt einen Fehler zu werfen.
|
||
|
|
||
|
Wenn du z.B. den 31.02.2023 eingibst, passt Java dieses Datum auf den nächsten gültigen Tag an, in diesem Fall den 3. März 2023, da der Februar im Jahr 2023 nur 28 Tage hat.
|
||
|
|
||
|
Um sicherzustellen, dass wirklich nur gültige Datumsangaben akzeptiert werden und eine Ausnahme (wie `ParseException`) bei ungültigen Daten geworfen wird, musst du den Leniency-Modus deaktivieren. Hier ist ein Beispiel:
|
||
|
|
||
|
```java
|
||
|
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
|
||
|
sdf.setLenient(false); // Leniency-Modus deaktivieren
|
||
|
try {
|
||
|
Date date = sdf.parse("31.02.2023");
|
||
|
System.out.println("Gültiges Datum: " + date);
|
||
|
} catch (ParseException e) {
|
||
|
System.out.println("Ungültiges Datum: " + e.getMessage());
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Mit `sdf.setLenient(false)` wird der Parser streng und ungültige Daten wie der 31. Februar führen zu einem Fehler.
|