auf Valides Datum prüfen

Dieses Thema auf Valides Datum prüfen im Forum "Allgemeine Java-Themen" wurde erstellt von Thomas_d200, 2. Okt. 2012.

Thema: 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...

  1. 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:

    Code (Java):

    String expression = "^(19|20)\\d{2}[-/]?[0-1][1-9][-/]?(0[1-9]|[12][0-9]|3[01])$";
    CharSequence inputStr = s1.substring(0,8); //Hier steckt mein Datum  
    Pattern pattern = Pattern.compile(expression,Pattern.CASE_INSENSITIVE);  
    Matcher matcher = pattern.matcher(inputStr);  
    if(matcher.matches()){  
           isValid = true;  
    }
     
    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
     
  2. Hinweis: KOSTENLOSE Java-Grundlagen DVD. Sichere dir hier den kostenlosen Zugriff auf 7 Stunden Video Java-Know How und starte richtig durch!
  3. Code (Java):
    CharSequence inputStr = s1.substring(0,8);
    Dein Beispieldatum oben hat 10 Stellen.
     
  4. oh sorry, mein Datum kommt natürlich so daher: 20121002 ;)
     
  5. Muss es Regex sein?
     
  6. 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.
     
  7. Dein Datum kommt ja so an 20121002 als String. Teile es in die relevanten Bereiche und überprüfen den int-Wert:

    Code (Java):

       private boolean checkDate(String sDate){
          boolean ok=true;
          int y= Integer.parseInt(sDate.substring(0,4));
          int m= Integer.parseInt(sDate.substring(4,6));
          int d= Integer.parseInt(sDate.substring(6));
          if ((y>2099 || y<1700)||(m<=0 || m>12)||(d<=0||d>31)){
             return false;
          }
          return ok;
       }
     
     
  8. 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))
     
  9. bzw SimpleDateFormat klasse siehe als Beispiel
     
  10. 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??
     
  11. Diesmal mit SimpleDateFormat, obs 100 pro klappt musst testen:) Müsste auch irgendwo im iNet ähnlicher Code sein.
    Code (Java):

       private boolean checkDate(String sDate) {
          String sDatumFormat= "yyyyMMdd";
          try {
             SimpleDateFormat sdf= new SimpleDateFormat(sDatumFormat);
             format.setLenient(false);
             format.parse(input);
          } catch (ParseException e) {
             return false;
          } catch (IllegalArgumentException e) {
             return false;
          }
          return true;
       }
     
     
  12. Ja ssoul26 dein code ähnelt dem, was ich in meinem Beispiel hier auch Verlinkt hatte ;-)

     
  13. Ahhhhh dmn:) Sorry hab ich nicht angeguckt! ;)
     
  14. Danke Leutz, klappt soweit sehr gut ...
    oftmals ist die kompliziertere Lösung (wie bei mir) nicht immer zielführend ;o)

    schönen abend
     
  15. Kostenlose Java-Grundlagen DVD im Wert von 29,95 € heute kostenlos sichern (Klick)
Die Seite wird geladen...

auf Valides Datum prüfen - Ähnliche Themen

Forum Datum
beispiel für valides Xml-Dokument durch XML-Schema XML und Co. 16. Feb. 2005
LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen Mittwoch um 09:10 Uhr
Datum und Uhrzeit in andere Zeitzone umrechnen Allgemeine Java-Themen Montag um 15:18 Uhr
Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 5. Sep. 2016
Datum prüfen + zweistellig Allgemeine Java-Themen 10. Aug. 2016
Interessante Stellenangebote


Weitere Stellenanzeigen

Stellenanzeige Mediadaten