Dringend Hilfe bei Datum String TT.MM.JJJJ parsen



  • Hallo ich muss als String TT.MM.JJJJ die drei komponenten in einzelne werte packen, das mache ich mit:

    String date = "23.01.2007";
    Scanner scn = new Scanner(date).useDelimiter("\\.");
    int day = scn.nextInt();
    int month = scn.nextInt();
    int year = scn.nextInt();
    System.out.println(day + "." + month + "." + year);
    

    So aber mein Problem ist, der String muss geprüft werden ob dieser gültig ist.
    Hier Beispiele für ungültige String:

    2.1.2007
    23.A5.2003
    23.02!2007

    Wie kann man das überprüfen???

    Bitte um schnelle Hilfe



  • what about DateFormat.parse(); ?



  • simpledateformat



  • Grundsätzlich macht man das mit endlichen Automaten. In Deinem Fall musst Du prüfen, ob das erste Zeichen eine Ziffer ist. Falls ja, dann prüfst Du, ob das zweite Zeichen auch eine Ziffer ist. Falls ja, dann prüfst Du, ob das dritte Zeichen ein Punkt ist usw. Falls Du ohne Fehler alle Zeichen geprüft hast, ist der Ausdruck korrekt.

    Such mal im Netz nach "endlichen Automaten" und "Java".



  • Blackthorne schrieb:

    Grundsätzlich macht man das mit endlichen Automaten. . .

    Also, wenn man nicht gerade Aufgaben für theoretische Informatik lösen muss, sollte man doch die von Java gegebenen Mittel verwenden. Dazu gehören – wie schon genannt – DateFormat und Calendar (GregorianCalendar). Letztere Klasse bietet mit der Methode get(int field) die Möglichkeit einzelne Werte eines Datums zu ermitteln.


Log in to reply