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. Schau mal hier --> (hier klicken!)
    Dort wirst du fündig!
  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
Projekte + Datum + löschen Java Basics - Anfänger-Themen 6. Juli 2016
Je nach eingestellter Browsersprache Datum verändert ausgeben HTML / CSS / JScript / AJAX 24. Juni 2016
Datum serialisieren Java Basics - Anfänger-Themen 12. Juni 2016
Datum Zeitdifferenz in Stunden umrechnen Allgemeine Java-Themen 10. Juni 2016
Interessante Stellenangebote


Weitere Stellenanzeigen

Stellenanzeige Mediadaten