# Datum auf Gültigkeit überprüfen



## MaTrIkS (5. Feb 2007)

Hallo

Ich möchte gerne ein Datum auf seine Gültigkeit überprüfen. Also sprich: Prüfen, ob dieses Datum existiert. Monatslänge, Schaltjahre, etc beachten. Wie funktioniert das?
Ich habe Tag und Monat als Integerwert vorliegen (einstellig bei <10), das Jahr als viestelligen Integerwert.

Desweiteren soll überprüft werden, ob dieser Tag in der Zukunft liegt oder nicht. Es muss also irgendwie mit der Systemzeit verglichen werden. Sollte der Tag noch nicht gewesen sein, also in der Zukunft liegen, dann soll eine Fehlermeldung ausgegeben werden.

Ich stehe ehrlich gesagt mit den ganzen Datumsformaten auf dem Kriegsfuß. Ich hoffe es kann mir da jemand helfen. Danke.


----------



## Gelöschtes Mitglied 5909 (5. Feb 2007)

DateFormat.parse(String s)

oder du schaust mal in die api con GregorianCalendar


----------



## MaTrIkS (5. Feb 2007)

Sorry, aber ich werd daraus nicht schlau.

Kannst du mir konkreten Quelltext geben?

Sagen wir ich habe

```
int tag = 26;
int monat = 8;
int jahr = 1970;
```

Was muss ich jetzt machen, um zu überprüfen, ob das Datum existiert?
Was muss ich machen, um nachzusehen, ob das Datum in der Zukunft liegt?


----------



## rik0 (5. Feb 2007)

Mir fällt im Moment nur das hier ein - gibt's da keine elegantere Methode?


```
import java.util.GregorianCalendar;

public class start {
	
	public static void main(String[] args) {
		
		GregorianCalendar gc = new GregorianCalendar(2007,57,23);  //Mal sehen, ob es den 23. Tag des 57. Monats 2007 gibt :-)
		gc.setLenient(false);
		
		try {
			gc.get(GregorianCalendar.YEAR);
			gc.get(GregorianCalendar.MONTH);
			gc.get(GregorianCalendar.DAY_OF_MONTH);
			System.out.println("Datum existiert");
		} catch (IllegalArgumentException e) {
			System.out.println("Datum existiert nicht");

		}		
	}
}
```


und um zu prüfen, ob das Datum vor/nach einem anderen liegt, gibts die Methoden before() und after(). Hier steht mehr: API: GregorianCalendar


----------



## Gelöschtes Mitglied 5909 (5. Feb 2007)

oder mit date:

```
int tag = 26;
int monat = 8;
int jahr = 1970;

try {
	Date foo = DateFormat.parse(tag + monat + jahr);
} catch (ParseException e) {
	//fehler
}

Date now = System.currentTimeMillis();

if (foo.compareTo(now) < 0)
// vergangenheit

if (foo.compareTo(now) == 0)
// gegenwart

if (foo.compareTo(now) > 0)
// zukunft
```

sollte auch klappen, ich weiß aber nich ob auch ne parseexception geworfen wird wenn des kein gültiges datum ist, ich vermute nein


----------

