Java-Forum.org  
Zurück   Java-Forum.org > Java - Programmierung > Allgemeine Java-Themen

Allgemeine Java-Themen: auf Valides Datum prüfen

Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen

Antwort    
Themen-Optionen Thema durchsuchen Ansicht
Alt 02.10.2012, 13:08   #1
 
auf Valides Datum prüfen - Standard auf Valides Datum prüfen

Hallo Leute,

hab mir mal mit Expressions versucht, das ein Datum auf seine Validität prüft.
Bei mir kommt das Datum so daher: 2012-10-02

Hab hierfür dieses Teil gebastelt:

Java Code: Quelltext in neuem Fenster öffnen
  1. String expression = "^(19|20)\\d{2}[-/]?[0-1][1-9][-/]?(0[1-9]|[12][0-9]|3[01])$";
  2. CharSequence inputStr = s1.substring(0,8); //Hier steckt mein Datum  
  3. Pattern pattern = Pattern.compile(expression,Pattern.CASE_INSENSITIVE);  
  4. Matcher matcher = pattern.matcher(inputStr);  
  5. if(matcher.matches()){  
  6.        isValid = true;  
  7. }

ich ruf das ganze über ne jsp auf, jedoch nicht immer liefert dies ein valides Datum. Weiß wer warum oder was ich falsch mach bzw stimmt meine Expression-syntax?

LG
 
Alt 02.10.2012, 13:11   #2
 
auf Valides Datum prüfen - Standard AW: auf Valides Datum prüfen

Java Code: Quelltext in neuem Fenster öffnen
  1. CharSequence inputStr = s1.substring(0,8);
Dein Beispieldatum oben hat 10 Stellen.
 
Alt 02.10.2012, 13:14   #3
 
auf Valides Datum prüfen - Standard AW: auf Valides Datum prüfen

oh sorry, mein Datum kommt natürlich so daher: 20121002
 
Alt 02.10.2012, 13:38   #4
ssoul26
 
auf Valides Datum prüfen - Standard AW: auf Valides Datum prüfen

Muss es Regex sein?
 
Alt 02.10.2012, 14:02   #5
 
auf Valides Datum prüfen - Standard AW: auf Valides Datum prüfen

Nee muss nicht regex sein, habs halt mal so mit dem Teil umgesetzt
Für andre Lösungswege (die nicht gerade 50 zeilen code enhalten) wäre ich sehr dankbar.
 
Alt 02.10.2012, 14:12   #6
ssoul26
 
auf Valides Datum prüfen - Standard AW: auf Valides Datum prüfen

Dein Datum kommt ja so an 20121002 als String. Teile es in die relevanten Bereiche und überprüfen den int-Wert:

Java Code: Quelltext in neuem Fenster öffnen
  1. private boolean checkDate(String sDate){
  2.       boolean ok=true;
  3.       int y= Integer.parseInt(sDate.substring(0,4));
  4.       int m= Integer.parseInt(sDate.substring(4,6));
  5.       int d= Integer.parseInt(sDate.substring(6));
  6.       if ((y>2099 || y<1700)||(m<=0 || m>12)||(d<=0||d>31)){
  7.          return false;
  8.       }
  9.       return ok;
  10.    }
 
Alt 02.10.2012, 14:27   #7
 
auf Valides Datum prüfen - Standard AW: auf Valides Datum prüfen

warum verwendest du nicht die Kalender funktion (die calender klasse), da kannst du auch schauen ob es den Tag wirklich gibt (nicht jeder Monat hat 31 Tage (nur mal so als info))
 
Alt 02.10.2012, 14:29   #8
 
auf Valides Datum prüfen - Standard AW: auf Valides Datum prüfen

bzw SimpleDateFormat klasse siehe als Beispiel
 
Alt 02.10.2012, 14:30   #9
 
auf Valides Datum prüfen - Standard AW: auf Valides Datum prüfen

Danke für die rasche Antwort ssoul26, jedoch prüft dein if natürlich nicht ab, zB.: auf den 30.02.2012 oder 31.04.2012 .. iwie muss hier noch auf Schaltjahre bzw auf 30 bzw 31 kalendertage zu den jeweiligen Monaten geprüft werden.. geht das nur mit der Calender Funktion??
 
Alt 02.10.2012, 14:58   #10
ssoul26
 
auf Valides Datum prüfen - Standard AW: auf Valides Datum prüfen

Diesmal mit SimpleDateFormat, obs 100 pro klappt musst testen Müsste auch irgendwo im iNet ähnlicher Code sein.
Java Code: Quelltext in neuem Fenster öffnen
  1. private boolean checkDate(String sDate) {
  2.       String sDatumFormat= "yyyyMMdd";
  3.       try {
  4.          SimpleDateFormat sdf= new SimpleDateFormat(sDatumFormat);
  5.          format.setLenient(false);
  6.          format.parse(input);
  7.       } catch (ParseException e) {
  8.          return false;
  9.       } catch (IllegalArgumentException e) {
  10.          return false;
  11.       }
  12.       return true;
  13.    }
 
Antwort    

Zurück   Java-Forum.org > Java - Programmierung > Allgemeine Java-Themen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen: auf Valides Datum prüfen
Datum Prüfen
Datum Prüfen: Hallo Leute, ich habe eine aufgabe von...
Datum prüfen, ob es vor einem anderen Datum liegt
Datum prüfen, ob es vor einem anderen Datum liegt: Hallo liebe Forengemeinde, schreibe ein...
Datum prüfen
Datum prüfen: Hallo, ich habe ein Programm welches mir das...
Datum prüfen
Datum prüfen: Hallo liebe Forengemeinde, zunächst einmal von...
Datum prüfen
Datum prüfen: Hallo! Bietet Java eine Methode an, um einen...




Sie betrachten gerade auf Valides Datum prüfen