Datentypen Unvollständiges Datum parsen

evil_one

Mitglied
Hallo,
ich habe mich gestern schon ein wenig durch das Forum gekämpf um evt. eine Antwort auf meine Frage zu finden.
Ich habe folgendes Problem:
Ich möchte einen Datumsstring Parse... Grundsätzlich kein Problem mit der Joda Time Klasse.
Folgende Strings sollen ohne exception verarbeitbar sein...
"20021100" - Tag fehlt
"19650015" - Monat fehlt
"19860000" - nur Jahr vorhanden

Ist das mit Joda Time machbar? Wenn ja wie?
 
Keine Ahhnung ob das automatisch machbar ist.

Konkret habe ich das so umgesetzt, aber zum Schluss steht da

Java:
	private boolean dateIsValid(String pYear, String pMonth, String pDay) {
		String date = pYear + "-" + pMonth + "-" + pDay;
		try {
			SimpleDateFormat d = new SimpleDateFormat("yyyy-MM-dd");
			d.setLenient(false);
			d.parse(date);
			return true;
		} catch (Exception e) {
			return false;
		}
	}

Warum willst du die Exception vermeiden? Laufzeit?

EDIT: Etwas habe ich noch vergessen - die Werte werden in einzelnen Felder eingegeben und da prüfe ich die schon bei der Eingabe (Tag 1..31 ...)
 
SimpleDateFormat parst das schon auch ohne Exception aber es kommt halt mehr oder weniger brauchbares bei raus. Was soll denn aus 00 geparst werden? einfach immer der Erste?

"20021100" > 01.11.2002
"19650015" > 15.01.1965
"19860000" > 01.01.1986

so, quasi?
 
Java:
		String a = "20021100";
		String b = "19650015";
		String c = "19860000";
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		System.out.println(sdf.parse(a));
		System.out.println(sdf.parse(b));
		System.out.println(sdf.parse(c));

Ausgabe:
Code:
Thu Oct 31 00:00:00 CET 2002
Tue Dec 15 00:00:00 CET 1964
Sat Nov 30 00:00:00 CET 1985

siehst du eine Exception?
 
nö, weil du sie nicht ausgibst 😉. Plausis mit Exception-Handling zu lösen, ist übrigens auch nicht soo toll. Zumal sich mir nicht ganz erschließt, was dein Code mit der Frage vom TO zu tun haben soll. Er will sie ohne Exception parsen und du schreibst ihn ein Code, womit dank setLenient auf jeden Fall eine geworfen wird.

Die Frage ist doch, was der TO bei einem Tag oder Monat von 0 stattdessen erwartet
 
Wow... so viele Antworten in Kurzer Zeit...
Ich merke gerade das meinem Listing etwas wichtiges fehlt...

Wenn eine der Angaben im unvollständigen Datum fehlt... Soll entsprechende der Zeitraum als Datumsangabe verwendet werden.

Beispiel:
"20021100" - Geboren im November 2002 Tag unbekannt
"19650015" -
"19860000" - im Jahr 1986 Geboren...
 
Gegenfrage: siehst du bei mir keine? ;-)
Hilfreicher wäre wohl zu sagen warum bei dir keine kommt, da ja ja bei mir eine kommt.
[STRIKE]Bei dir kommt eine, weil du ein anderes Format angegeben hast?
Seins (das gewünschte vom TO): "yyyyMMdd"
Deins: "yyyy-MM-dd"
[/STRIKE]
Edit:
Ok, das war Quatsch. Nicht richtig geguckt. Du nutzt ja ne eigene Methode...
Liegt dann wohl am setLenient()
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben