Vollständige Datumsprüfung

melle

Grünschnabel
Hoffe Ihr könnt mir helfen. Habe ein kleines Progamm um eine Datumseingabe zu überprüfen. Funktioniert soweit ganz gut.
1. Das Problem liegt nur bei der Angabe der Jahreszahl. Es geht sowohl 13.12.1995 als auch 13.12.19, was ich ja nicht will. Wie kann ich erreichen, das er wirklich nur Datumseingaben akzeptiert wo ein komplettes Datum steht?
2. Wie kann ich die Tagesanzahl zwischen 2 Datumsangaben berechnen?

Code:
import java.util.*;
import java.text.*;
import java.io.*;

public class MartinDatum
{
public static void main(String args[])
{
Date dtm = null;
MartinDatum input = new MartinDatum();
String eingabe = input.datuminput("");
try
{
dtm = input.pruefeeingabe(eingabe);
System.out.println("Eingabe von"+" "+eingabe+" "+"ist ok");
}
catch(ParseException e)
{
System.out.println("Falsches Datum oder falsche Eingabe");
}
}
public Date pruefeeingabe(String eingabe) throws ParseException
{
SimpleDateFormat datform = new SimpleDateFormat("dd.MM.yyyy");
datform.setLenient(false);
Date dtm = datform.parse(eingabe);
return dtm;
}

public String datuminput(String ein)
{
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
while(ein != null)
{
ein = in.readLine();
break;
}
}
catch(IOException e)
{
System.out.println(e);
}
return ein;
}
}

Danke.
 
Hallo!

Zu deinem ersten Problem:
Code:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo {

	public static void main(String[] args) {
		//Datums Überprüfung
		SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
		
		String date = "29.08.1983";
		String date1 ="-11111";
		String date2 ="1.1";

		try {
			Date d = sdf.parse(date);
			System.out.println("Date " + d + " is valid!");
		} catch (ParseException e) {
			System.err.println("Date is invalid!");
			e.printStackTrace();
		}

		try {
			Date d = sdf.parse(date1);
			System.out.println("Date " + d + " is valid!");
		} catch (ParseException e) {
			System.err.println("Date is invalid!");
			e.printStackTrace();
		}

		try {
			Date d = sdf.parse(date2);
			System.out.println("Date " + d + " is valid!");
		} catch (ParseException e) {
			System.err.println("Date is invalid!");
			e.printStackTrace();
		}
	}
}

Zu deinem zweiten schaust du mal hier:
http://www.javaworld.com/javaworld/jw-03-2001/jw-0330-time_p.html

HTH
Gruß Tom
 
Zurück