Datums-String mit "ungültigem Anhängsel" wird ohne Fehler geparsed. Kann man dies irgendwie beheben?

Chocola

Neues Mitglied
Hallo. 🙂
Seit einer Weile quäle ich mit einem kleinen Problem beim Programmieren, wo weder Google noch das JavaInsel-Openbook mir helfen können. (Oder ich finde einfach kein passendes Stichwort/Suchwort dafür^^")
Nun hoffe ich, dass ich hier Hilfe finden kann.

Also es geht um folgendes:
Ich habe ein Datum, was in einem String gespeichert ist und will es in ein "Date"-Typ umwandeln.
Das habe ich mithilfe des SimpleDateFormat so gelöst:
Java:
SimpleDateFormat dateStrSource = new SimpleDateFormat("dd.mm.yyyy");
dateStrSource.setLenient(false);
entryDate = dateStrSource.parse(uncheckedDate);

Bis jetzt ist alles Prima. Allerdings werden hierbei auch Strings wie zB. "29.09.1993BLAAA" oder "27.05.2025 BLUBBER" ohne Fehler geparsed (also Datums-Strings mit überflüssigem Anhängsel).
Und das finde ich nicht wirklich schön. Nun frage ich mich, ob es irgendseine Methode o.Ä. gibt, die dafür sorgt, dass solche Strings nicht geparsed werden (bzw. sogar eine ParseException werfen).
Oder müsste ich dieses Problem, wohl oder übel, zufuß angehen und die Länge des Strings immer überprüfen lassen? :S
Ich hoffe ihr könnt mir helfen.
Gruß
Chocola :rtfm:
 
Also ich würde fast vermuten dir bleibt nichts anderes übrig
The method may not use the entire text of the given string.

Du könntest der parse Methode ein ParsePosition Objekt mitgeben und anschließend auf diesem Objekt getIndex aufrufen, was aber eig. dann aufs gleiche hinausläuft 🙂
Aber so schlimm ist die eine if-Abfrage nun auch nicht oder? Dass es da keine passende Methode gibt (oder etwa doch?) finde ich allerdings auch nicht sonderlich schön.

Btw: Meinst du nicht viel eher dd.MM.yyyy (das würde zumindest mit deinem Beispiel übereinstimmen 😛)
 
Joa.. ich meine wenns nichts gibt, dann habe ich wohl Pech gehabt. ^^"
(Wär halt nur ziemlich lästig, weil ich das an vielen Stellen im Programm machen muss, wo was geparsed wird :S und wie bereits erkannt hast.. nicht wirklich elegant. ^^")
Aber dennoch Danke.. ^^"
Gruß
Chocola
 
Mach dir eine Methode
Code:
Date parseAll(String patters, String source)
, die prüft ob alles geparst wurde. Dann ist es egal wie oft du die benötigst -> einfach aufrufen.
Alternativ kannst du auch
Code:
SimpleDateFormat
um die entsprechende Methode erweitern.
 

Zurück
Oben