Datum überprüfen

Status
Nicht offen für weitere Antworten.

maik

Aktives Mitglied
Möchte mit einer Methode ein Datum im String Format TT.MM.JJJJ überprüfen ob es ein Datum ist.
Als Rückgabe true or false.

Wie kann ich das schnell und effizent machen?

private boolean isDate(String datum)
{
????


}

thx
 

Isaac

Bekanntes Mitglied
Schreib dir ne regual expression "REGEX_DATE", das geht ja fix und dann einfach

strDateTime.matches(REGEX_DATE);
 

maik

Aktives Mitglied
Hast du ein Beispiel wie ich das machen könnte. Etwas Code würde mir viel mehr weiterhelfen!
Vielleicht gibts da auch noch andere Möglichkeiten ???
Danke
 

Isaac

Bekanntes Mitglied
In dem von mir geposteten Link geht es doch darum wie eine regular expression aufgestellt wird um einem Datum in der Form yyyy-mm-dd von 1900-01-01 bis 2099-12-31 zu beschreiben. Sogar mit Erklärung. welcher Teil der regex wozu da ist.
 

maik

Aktives Mitglied
Da ich das mit der regual expression nicht verstehe, habe ich mir folgendes überlegt:

Das Datum im String Fromat TT.MM.JJJJ in ein Date Objekt umzuwandeln, wenn es klappt ist es ein Datum wenn nicht dann keins !


Code:
   try
   {
     java.util.Date d = new java.util.Date("12.04.2004");
   }
   catch(Exception e)
   {
     System.out.println(e);
   }

leider bekomme ich immer eine java.lang.IllegalArgumentException obwohl es ein Datum ist ??

Hat jemand einen Verbesserungsvorschlag !?
 
B

bygones

Gast
mit Date zu arbeiten ist nicht so gut, da die meisten Methoden deprecated sind...

ich wüsste momentan auch keine andere Lösung als regex, da mit den Formattern für Date es nicht zu lösen ist:
Code:
System.out.println(DateFormat.getDateInstance().parse("33.44.1979"));
liefert z.b. Thu Sep 02 00:00:00 CEST 1982 zurück....
 

Isaac

Bekanntes Mitglied
Du willst wissen ob TT.MM.JJJJ ein valides Datum ist. Jetzt musst du dich entscheiden ob du obskure daten erlaubst oder nicht. Also z.b. ist der 45 Tag des 15 Monats erlaubt? Ja oder Nein. Der Calendar frist das und setzt es in ein Datum um. So wird aus dem 13 Monat eben Januar. Ich persönlich erlaube solche Daten nicht da kein Mensch sowas genau umrechnet.


Willst du keine Beschränkungen ist eine regex der Form

/d/d[.]/d/d[.]/d/d/d/d

vollkommen ausreichend. Hier wird nur geschaut ob die Eingegebenen Werte dezimale Zahlen sind und von einem Punkt separiert werden. Nix dolles aber es tut.

Witziger wird es wenn du dem Nutzer Beschränkungen auf vernünftige daten auferlegen willst. Gibts es nur besimmte Jahrhunderte die valide sind? Für eine Kalkulationssoftware reicht sicher von 1800-2100. Für eine Ahnentafel reicht es nicht. Das muss man wissen.

/d/d/d/d

wir beschneiden also das Jahr nicht. alles von 0000 bis 9999 ist ein valides Jahr. Kommen wir zum Monat. Alle Monate haben maximal 31 Tage. Also werden nur Zahlen von 1 bis 31 als valider Monat erkannt.

(0[1-9]|[12][0-9]|3[01])

Was macht diese regex? die erste die 0 vorne ist erlaubt mit einer folgenden 1 oder 2 etc bis 9. Die 1 oder 2 vorne ist erlaubt mit einer folgenden 0-9 und die 3 ist nur mit einer folgenden 0 oder 1 erlaubt. Kommen wir zum Monat. Monate hats immer 12, fix. Naja mir ist kein Jahr mit mehr oder weniger Monaten bekannt.

(0[1-9]|1[012])

Same as above, die 0 ist erlaubt mit einer 1-9 zusammen also z.b. 07 03 etc. Die 1 ist erlaubt mit einer 0 1 und 2. Also 10 11 und 12. Fügen wir alle 3 zusammen...

(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.]/d/d/d/d


Das wars. So schwer sind regular expressions nicht. Einziger Wermutstropfen ist, das auch der 31 Februar ein valides Datum ist. Aber damit, denke ich, kann man leben.

Im Programm sieht das dann so aus

Code:
private static final String REGEX_DATE = "(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.]/d/d/d/d";

public boolean isDate(String s)
{
    return s.matches(REGEX_DATE);
}

Das wars
 

Jaraz

Bekanntes Mitglied
Isaac hat gesagt.:
Einziger Wermutstropfen ist, das auch der 31 Februar ein valides Datum ist. Aber damit, denke ich, kann man leben.

<übertreibung>Ja, klar, dann legt jemand die wichtige jährliche Wartung eines Atomreaktors aus versehen auf diese Datum. Ist ja nicht schlimm wenn die mal vergessen wird. :wink: </übertreibung>
 

Isaac

Bekanntes Mitglied
Jaraz hat gesagt.:
Isaac hat gesagt.:
Einziger Wermutstropfen ist, das auch der 31 Februar ein valides Datum ist. Aber damit, denke ich, kann man leben.

<übertreibung>Ja, klar, dann legt jemand die wichtige jährliche Wartung eines Atomreaktors aus versehen auf diese Datum. Ist ja nicht schlimm wenn die mal vergessen wird. :wink: </übertreibung>


Es kommt eben immer darauf an wie sicher man etwas wissen muss. Die selbe Argumentation zieht aber bei meinem allseits beliebten Beispiel auch

int i = (int)1./0.
System.out.println(i);

Ergibt:
2147483647


1 geteilt durch 0 ist also laut Java 2147483647


Man muss eben immer wissen wie genau man es braucht :)
 

Illuvatar

Top Contributor
@Isaac *klugscheiß*
Das kommt aber vom Typcast, da wird Infinity in int gecastet.
-> 1/0 gibt ArithmeticException
1.f/0.f gibt Infinity
(int)(1.f/0.f) gibt Integer.MAX_VALUE :wink:
 

gondor

Bekanntes Mitglied
ich habe mal den anstaz genommen. doch kommt bei einem string wie: '09.03.2004' unter

Code:
final String REGEX_DATE = "(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.]/d/d/d/d";

System.out.println(temp_StartDateFromHeader.matches(REGEX_DATE));

immer 'false' heraus, obwohl das format ja stimmen müsste.

kann hier noch mal jemand helfen?

gondor(..)

Isaac hat gesagt.:
Du willst wissen ob TT.MM.JJJJ ein valides Datum ist. Jetzt musst du dich entscheiden ob du obskure daten erlaubst oder nicht. Also z.b. ist der 45 Tag des 15 Monats erlaubt? Ja oder Nein. Der Calendar frist das und setzt es in ein Datum um. So wird aus dem 13 Monat eben Januar. Ich persönlich erlaube solche Daten nicht da kein Mensch sowas genau umrechnet.


Willst du keine Beschränkungen ist eine regex der Form

/d/d[.]/d/d[.]/d/d/d/d

vollkommen ausreichend. Hier wird nur geschaut ob die Eingegebenen Werte dezimale Zahlen sind und von einem Punkt separiert werden. Nix dolles aber es tut.

Witziger wird es wenn du dem Nutzer Beschränkungen auf vernünftige daten auferlegen willst. Gibts es nur besimmte Jahrhunderte die valide sind? Für eine Kalkulationssoftware reicht sicher von 1800-2100. Für eine Ahnentafel reicht es nicht. Das muss man wissen.

/d/d/d/d

wir beschneiden also das Jahr nicht. alles von 0000 bis 9999 ist ein valides Jahr. Kommen wir zum Monat. Alle Monate haben maximal 31 Tage. Also werden nur Zahlen von 1 bis 31 als valider Monat erkannt.

(0[1-9]|[12][0-9]|3[01])

Was macht diese regex? die erste die 0 vorne ist erlaubt mit einer folgenden 1 oder 2 etc bis 9. Die 1 oder 2 vorne ist erlaubt mit einer folgenden 0-9 und die 3 ist nur mit einer folgenden 0 oder 1 erlaubt. Kommen wir zum Monat. Monate hats immer 12, fix. Naja mir ist kein Jahr mit mehr oder weniger Monaten bekannt.

(0[1-9]|1[012])

Same as above, die 0 ist erlaubt mit einer 1-9 zusammen also z.b. 07 03 etc. Die 1 ist erlaubt mit einer 0 1 und 2. Also 10 11 und 12. Fügen wir alle 3 zusammen...

(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.]/d/d/d/d


Das wars. So schwer sind regular expressions nicht. Einziger Wermutstropfen ist, das auch der 31 Februar ein valides Datum ist. Aber damit, denke ich, kann man leben.

Im Programm sieht das dann so aus

Code:
private static final String REGEX_DATE = "(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.]/d/d/d/d";

public boolean isDate(String s)
{
    return s.matches(REGEX_DATE);
}

Das wars
 

gondor

Bekanntes Mitglied
so ist es richtig:

Code:
private static final String REGEX_DATE = "(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.]\\d\\d\\d\\d"; 

public boolean isDate(String s) 
{ 
    return s.matches(REGEX_DATE); 
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Datum auf Gültigkeit überprüfen Java Basics - Anfänger-Themen 4
G Datum überprüfen Java Basics - Anfänger-Themen 8
C Darstellung von Datum - Codes richtig? Java Basics - Anfänger-Themen 2
L Datum - Monat und Jahr werden falsch angezeigt Java Basics - Anfänger-Themen 4
T Datum als Variable wert Java Basics - Anfänger-Themen 4
T Datum in die als Variabelwert Java Basics - Anfänger-Themen 5
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
berserkerdq2 Wie datum im default format speichern? Java Basics - Anfänger-Themen 5
W Methode, die mit einem Datum arbeitet? Java Basics - Anfänger-Themen 22
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
J Datum ermitteln ? Java Basics - Anfänger-Themen 14
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
J JDatePicker: Datum wird nicht in Textfeld übernommen Java Basics - Anfänger-Themen 5
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Datum und Uhrzeit Java Basics - Anfänger-Themen 4
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
B Datum in dieser Range SQL? Java Basics - Anfänger-Themen 3
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
D Kontoauszüge von bestimmtem Datum Java Basics - Anfänger-Themen 35
B Termine (Datum erstellen), Abhängig von Intervallen Java Basics - Anfänger-Themen 0
A Nächstes Datum ausgeben, if-Schleife unklar Java Basics - Anfänger-Themen 6
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
Bluedaishi Datum in Jtextarea füllen Java Basics - Anfänger-Themen 5
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
S Datum umformatieren Java Basics - Anfänger-Themen 2
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8
D Projekte + Datum + löschen Java Basics - Anfänger-Themen 11
M Datum serialisieren Java Basics - Anfänger-Themen 1
S Datum einlesen Java Basics - Anfänger-Themen 1
D Aktuelles Datum wird falsch ausgegeben Java Basics - Anfänger-Themen 2
K Methoden Datum parsen Java Basics - Anfänger-Themen 16
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
MiMa Jüngstes Datum ermitteln Java Basics - Anfänger-Themen 4
2 Uhrzeit und Datum aktualisieren Java Basics - Anfänger-Themen 12
R Problem beim Wochenplan (Datum,Wochentag) Java Basics - Anfänger-Themen 30
O Datum-Werte gruppieren Java Basics - Anfänger-Themen 6
J Java Datum- Zeit Differenz bilden! Java Basics - Anfänger-Themen 4
M Methoden Aus Timestamp das Datum berechnen Java Basics - Anfänger-Themen 3
B Kontoauszug mit Datum ausgeben Java Basics - Anfänger-Themen 4
M Datum in Millisekunden allerdings ohne Uhrzeit Java Basics - Anfänger-Themen 4
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
T Datum mit einem Datums-Bereich vergleichen Java Basics - Anfänger-Themen 10
J Datum und Uhrzeit in Datenbank falsch hinterlegt Java Basics - Anfänger-Themen 13
L Aus Datum Millisekunden ermitteln ohne Zeitzonen-Berücksichtigung Java Basics - Anfänger-Themen 6
P Wieviele Tage seit dem Datum vergangen sind Java Basics - Anfänger-Themen 5
P Liste nach Datum sortieren Java Basics - Anfänger-Themen 7
B tageszahl in Datum umrechnen Java Basics - Anfänger-Themen 6
F Datum Differenz berechnen Java Basics - Anfänger-Themen 7
B String in Datum Java Basics - Anfänger-Themen 3
M CompareTo soll Datum sortieren Java Basics - Anfänger-Themen 2
K Daten (im Sinne von Datum) aus Webseiten extrahieren Java Basics - Anfänger-Themen 6
AssELAss String in Datum umwandeln Java Basics - Anfänger-Themen 4
I Datum und Uhrzeitpattern von Locale Java Basics - Anfänger-Themen 7
H Wie wandel ich ein Datum in eine Zeichenkette um mit StringBuffer? Java Basics - Anfänger-Themen 3
I Datum ohne GregorianCalendar und co. Java Basics - Anfänger-Themen 3
A Datum zwischen zwei Daten berechnen und in Tagen anzeigen Java Basics - Anfänger-Themen 4
N Datum abgleichen und Frage zum Layout Java Basics - Anfänger-Themen 3
D Wochentag für eingegebenes Datum bestimmen anhand von Formel Java Basics - Anfänger-Themen 2
E Zeit zum bestimmten Datum in millisekunden berechnen Java Basics - Anfänger-Themen 5
M Aktuelles Datum in MySQL speichern Java Basics - Anfänger-Themen 11
P Datum umwandeln Java Basics - Anfänger-Themen 5
A Datum formatieren Java Basics - Anfänger-Themen 6
K Samstag einer Woche anhand eines Datum Java Basics - Anfänger-Themen 3
J Mit Datum rechnen Java Basics - Anfänger-Themen 11
B Datum ändern? Java Basics - Anfänger-Themen 8
Tally Methoden BlueJ - Datum als Kalendertag int - tagImJahr Java Basics - Anfänger-Themen 6
K wie Datum in JTable anders anzeigen lassen Java Basics - Anfänger-Themen 2
B Differenz von 2 Datum Java Basics - Anfänger-Themen 8
MiMa String Datum ermitteln Java Basics - Anfänger-Themen 9
D Hilfe beim SDF Datum Ausgabe Java Basics - Anfänger-Themen 20
A Plausibles Datum Java Basics - Anfänger-Themen 21
A Aktuelles Datum einfügen.. Java Basics - Anfänger-Themen 4
K Datum und Uhrzeit als Date Objekt Java Basics - Anfänger-Themen 10
K Java Datum berechnen Java Basics - Anfänger-Themen 13
L Datum probleme Java Basics - Anfänger-Themen 6
S fehler beim datum parsen Java Basics - Anfänger-Themen 6
S Schleife Datum Java Basics - Anfänger-Themen 11
S Datum ändern bzw. abziehen Java Basics - Anfänger-Themen 3
M String in Datum umwandeln mit SimpleDateFormat Java Basics - Anfänger-Themen 3
E Datentypen Unvollständiges Datum parsen Java Basics - Anfänger-Themen 8
T Heutiges datum OHNE Calendar? Java Basics - Anfänger-Themen 9
K Wie Datum um einen Tag erhöhen? Java Basics - Anfänger-Themen 4
A Datum Prüfen Java Basics - Anfänger-Themen 3
B Wie aus einem Datum String eine Timestamp erzeugen Java Basics - Anfänger-Themen 6
E Datum und Uhrzeit von UTC in MET umrechnen Java Basics - Anfänger-Themen 6
E Methoden Datum , Uhrzeit, Nachricht in txt Datei schreiben Java Basics - Anfänger-Themen 3
E Eigene class datum Java Basics - Anfänger-Themen 2
A Datum formatieren Java Basics - Anfänger-Themen 8
E Algorithmen und Programmierung - Datum und Zeit ausgeben? Java Basics - Anfänger-Themen 8
M Datum aus einer Textdatei holen Java Basics - Anfänger-Themen 9
M Datum und Stunde als String ausgeben Java Basics - Anfänger-Themen 15
N Datentypen Datum konvertieren mit kurzer Monatsangabe Java Basics - Anfänger-Themen 3
U Java Datum vergleichen - Sommerzeitproblem Java Basics - Anfänger-Themen 5
R GregorianCalendar auf Datum reduzieren Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben