Datum prüfen

Sebastian29

Erfahrenes Mitglied
Moin, moin!

Bekommt der Parser auch das falsche Jahr mit? ( siehe unten )

zum Beispiel

String datum = "31.03.2222";
String pattern = "dd.MM.yyyy";



Also bei mir sagt der Parser, dass das Datum richtig ist! Warum, denn in diesem Jahr 2222 sind wir ja noch nicht soweit oder wir liegen noch im Sarg! :-)

Code:
	public static boolean isDatum(String datum, String pattern)
	{
		// Leeres Datumfeld wird nicht geprüft
		if (datum.equals("") || datum.equals(IS_DATUM_LEER))
			return true;

		SimpleDateFormat df = new SimpleDateFormat(pattern);

		// Weißt den Parser an auf existierende Datumswerte zu achten,
		// ohne die Zeile wird aus 32.01.2003, 01.02.2003
		df.setLenient(false);

		try
		{
			df.parse(datum);

			// Das Datum ist richtig
			return true;
		}
		catch (ParseException e) {
			// Das Datum ist falsch
			return false;
		}
	}

Damit frage ich ab, ob das ein Datum ist oder nicht!

In diesem Fall mit dem Jahr muss diese Methode normalerweise false zurückgeben, da das Jahr noch nicht gibt. Diese Methode gibt auch false zurück, wenn z.B. der Tag 32 ( auch numerisch ) ist, da 32 überhaupt nicht gibt!

Deshalb frage ich mich, warum bei dem Jahr 2222 nicht rumgemeckert wird bzw. nicht false zurückgegeben wird?

Sonst muss ich in der Methode noch erweitern, dass das Jahr nicht größer als das aktuelle Jahr 2008 stehen darf, aber ich denke, dass das irgendwie keinen Sinn macht, oder?

Gruß
Sebastian29
 
Warum sollte das kein richtiges Datum sein? Das Jahr 2222 gibt es. Da musst du schon von Hand überprüfen.
SInn macht es schon, denn wie gesagt, das Jahr gibt es und somit wird esa uch nicht als falsch erkannt.
 
Hi

Hmm... 32 ist nicht möglich, weswegen er false zurückgibt.
2222 ist jedoch eine mögliche Jahreszahl, wenn du keine Jahre die höher sind als 2008 zulassen willst, musst du das meines Wissens extra prüfen.

edit: ok too late :D
 
Passt doch, oder höhrt die Welt vor 2222 auf zu existieren. Du musst händisch prüfen ob das Datum größer als das aktuelle ist.

edit: bäh, auch too late
 
Zurück