Benutzer-Werkzeuge

Webseiten-Werkzeuge


usercontent:datum_verifizieren

Datum verifizieren

Funktion zum testen ob ein String ein gültiges Datum enthält.

    //Datum auf Syntax prüfen 
    //return true=ok
    private boolean DatumValidate(String datum) {
        Boolean gueltig=true;
        String format = "dd.MM.yy";
 
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        sdf.setLenient(false);
        try {
            Date date = sdf.parse(datum);
            System.out.println("Datum:"+ date);
            if (!sdf.format(date).equals(datum)) {
                gueltig=false;
            }
        } catch (ParseException ex) {
            gueltig=false;
        }
 
        return (gueltig);
    }

Intelligenterer Algorithmus

Hier werden verschiedenste Schreibweisen gleich richtig interpretiert. Diese Funktion gibt das Datum als LocalDate zurück, was ab Java 8 möglich ist.

/*
 *  Java Codeschnippsel & Algorithmen
 *  (c) http://www.javacode.sought.de/
 *  Weitergabe mit Quellenangabe erlaubt
 */
package javadatumeingabe;
 
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
 
/**
 * (c) http://www.javacode.sought.de/
 *
 * @author JavaEngel
 */
public class JavaDatumEingabe {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
 
        LocalDate lodate;
        String datumstr;
 
        datumstr = "02.06.62";
        lodate = LocalDatumValidate(datumstr);
        System.out.println(datumstr + "  =  " + lodate.format(DateTimeFormatter.ofPattern("dd.MM.yyyy")));
 
        datumstr = "2.6.62";
        lodate = LocalDatumValidate(datumstr);
        System.out.println(datumstr + "  =  " + lodate.format(DateTimeFormatter.ofPattern("dd.MM.yyyy")));
 
        datumstr = "2.6.2062";
        lodate = LocalDatumValidate(datumstr);
        System.out.println(datumstr + "  =  " + lodate.format(DateTimeFormatter.ofPattern("dd.MM.yyyy")));
 
        datumstr = "30.12.2062";
        lodate = LocalDatumValidate(datumstr);
        System.out.println(datumstr + "  =  " + lodate.format(DateTimeFormatter.ofPattern("dd.MM.yyyy")));
 
    }
 
    //Überprüft Datum und gibt es als LocalDate zurück
    //Funktion akzeptiert Schreibweisen wie 17.6.1962 , 17.06.1962, 17.06.62
    //Bei Kurzschreibweise des Jahres  wird das logisch naheliegendste angenommen 19xx oder 20xx
    //Ist Syntax falsch, wird null zurückgegeben
    private static LocalDate LocalDatumValidate(String datum) {
        LocalDate ldate = null;
        Integer tag, monat, jahr, aktuellejahr;
 
        if (datum.trim().length() > 10) {
            return (null);
        }
        String teil[] = datum.split("\\.");
        if (teil.length != 3) {
            return (null);
        }
        try {
            tag = Integer.parseInt(teil[0]);
            if ((tag > 31) || (tag < 1)) {
                return (null);
            }
 
            monat = Integer.parseInt(teil[1]);
            if ((monat > 12) || (tag < 1)) {
                return (null);
            }
 
            aktuellejahr = Integer.parseInt(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yy")));
            jahr = Integer.parseInt(teil[2]);
        } catch (NumberFormatException ex) {
            return (null);
        }
 
        if (jahr > 2200) {
            return (null);
        }
        if (jahr < 100) {
            if ((jahr - aktuellejahr) > 10) {
                jahr = jahr + 1900;
            } else {
                jahr = jahr + 2000;
            }
        }
        ldate = LocalDate.parse(String.format("%02d.%02d.%04d", tag, monat, jahr), DateTimeFormatter.ofPattern("dd.MM.yyyy"));
        return (ldate);
    }
 
}

Beispiel getestet mit Version

ab Java 8

Autor

Siehe auch

usercontent/datum_verifizieren.txt · Zuletzt geändert: 23/10/2014 21:57 von 84.185.17.142