Navigation
Java News
Navigation
Java News
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); }
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); } }
ab Java 8