Datum variablen eingeben + parsen

Moltar

Mitglied
Datum variabel eingeben + parsen

Hallo,

in meiner Anwendung soll vom Benutzer ein Datum eingegeben werden, das später weiterverarbeitet wird. Auf Grund gewünschter Flexibilität bei der Eingabe sollen verschiedene Datumsformate möglich sein:

Code:
DateFormat gerDateFormat = new SimpleDateFormat("dd.MM.yyyy");
DateFormat isoDateFormat = new SimpleDateFormat("yyyy-MM-dd");
DateFormat shortDateFormat = new SimpleDateFormat("ddMMyy");

Die Ausgabe soll im Beispiel als deutsches Datum erfolgen (gerDateFormat). Bisher habe ich das so gelöst:
Code:
if(value != null && !value.equals("")) {
	Date date = null;
	try {
		date = isoDateFormat.parse(value.toString());
		component.setText(gerDateFormat.format(date));
	} catch (ParseException e) {
		try {
			date = gerDateFormat.parse(value.toString());
			component.setText(gerDateFormat.format(date));
		} catch(ParseException e1) {
			try {
				date = shortDateFormat.parse(value.toString());
				component.setText(gerDateFormat.format(date));
			} catch(ParseException e2) {
				try {
					Date y = new Date();
					DateFormat yf = new SimpleDateFormat("yy");
					date = shortDateFormat.parse(value.toString() + yf.format(y));
					component.setText(gerDateFormat.format(date));
				} catch(ParseException e3) {
					MyMessage.showError("Ungültiger Datumswert: " + value.toString());
					component.setText("");
				}
			}
		}
	}
}

Das ist aber ziemlich unhandlich und falls ein weiteres Format hinzukommt, wird das immer schlimmer.

Weiß jemand, wie man das möglicherweise anders lösen könnte?

Grüße und danke schonmal
Moltar
 
Zuletzt bearbeitet:
Hi, leg alle formatter in ne Liste und versuchs mit ner Schleife:

Code:
Collection<SimpleDateFormat> formatter = new ArrayList<SimpleDateFormat>();
formatter.add(new SimpleDateFormat("dd.MM.yyyy"));
formatter.add(new SimpleDateFormat("yyyy-MM-dd"));
formatter.add(new SimpleDateFormat("ddMMyy"));
Date date = null;
for(SimpleDateFormat f : formatter)
{
	try
	{
		date = f.parse(value.toString());
		break;
	}
	catch (ParseException e)
	{
		// TODO: handle exception
	}
}
if(date==null)
{
	.
	.
	.
}

mfg smuehlba
 
Zurück