# Datum prüfen



## Alex_winf01 (3. Jan 2009)

Hallo liebe Forengemeinde,

zunächst einmal von mir ein frohes neues Jahr für alle.

Ich sitze gerade vor folgendem Problem:

Ich habe ein Textfeld für die Datumseingabe. Nun möchte ich prüfen, ob die Eingabe dem Format dd.MM.yyyy entspricht.


```
try
{
   DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
   Date parseDate = formatter.parse(datetext);
}
catch(ParseException)
{
  System.out.println("Datum nicht gültig");
}
```

Leider führt die Eingabe von 1.1.2000 nicht zur Ausgabe, dass das Datum nicht gültig ist. Ich habe mir jetzt mal parseDate mal ausgeben lassen und da wird die Uhrzeit mit ausgegeben. Wie kann ich jetzt überprüfen, ob die Eingabe im Format dd.MM.yyyy erfolgt?


----------



## Gast2 (3. Jan 2009)

guckst du


----------



## Alex_winf01 (4. Jan 2009)

@ SirWayne

Ich habs mir angeschaut und es ist noch folgende Problem aufgetreten:


```
try
{
    SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
    format.setLenient(false);       //Überprüfung auf korrektes Datum
    Date dDatum = format.parse(datum);
}
catch(Exception ex)
{
}
```

Wenn ich hier z. B. den 01.01.2000 in das Textfeld eingebe, läuft das Programm in den Catch-Block. Kann mir jemand einen Hinweis geben, warum?

EDIT: Ich vermute mal wegen der Uhrzeit, oder?


----------



## Gast2 (4. Jan 2009)

geht bei mir


----------



## Alex_winf01 (4. Jan 2009)

Bei mir läuft es in den Catch-Block und bei Dir?


----------



## hdi (4. Jan 2009)

Mach die Exception wieder zu einer ParseException. Hilft das? Ich weiss es nicht  :bae:


----------



## Gast2 (4. Jan 2009)

```
try
{
    SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
    format.setLenient(false);       //Überprüfung auf korrektes Datum
    Date dDatum = format.parse("1.1.2000");
}
catch(Exception ex)
{
ex.printStackTrace();
}
```

zeig mal den stack trace was für ein fehler er findet..
woher willst du wissen dass er in den catch block geht du machst dort doch nichts...


----------



## Alex_winf01 (5. Jan 2009)

@ SirWayne

Ich habe in den catch-Block ein 
	
	
	
	





```
System.out.println("Hier ist der Catch-Block");
```
 eingebaut. Daher weiss ich das, dass er in den catch-Block reinläuft. Einen stack trace bekomme ich nicht.


----------



## SlaterB (5. Jan 2009)

wäre aber besser, dann erhälst du nämlich Informationen zum Fehler,
etwa ob eine ganz andere Exception auftritt (z.B. NullPointerException)
oder auch, falls doch eine ParseException, eine Ausgabe zum geparsten String, der vielleicht doch nicht "01.01.2000" ist wie du felsenfest bis in den Abgrund vermutest,


ein 
System.out.println("Datum ist: "+datum+"|")
würde natürlich auch helfen, schon jedes Leerzeichen kann verheerend sein


----------



## Alex_winf01 (5. Jan 2009)

Also, ich hab mir mal den 
	
	
	
	





```
ex.printStackTrace();
```
 und 
	
	
	
	





```
System.out.println("Datum ist: "+datum+"|")
```
 eingebaut.

Ausgabe: Datum ist : 29.01.2009 |
java.lang.IllegalArgumentException: Illegal pattern character 'Y'


----------



## SlaterB (5. Jan 2009)

das tritt bei mir nur bei
SimpleDateFormat format = new SimpleDateFormat("dd.MM.YYYY");
statt
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
auf

poste doch noch mal den aktuellen Quellcode in etwas größerem Ausschnitt


----------



## Alex_winf01 (5. Jan 2009)

@ SlaterB



> das tritt bei mir nur bei
> SimpleDateFormat format = new SimpleDateFormat("dd.MM.YYYY");
> statt
> SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
> auf



Das wahr die Ursache!!! Danke. :applaus:


----------

