String in Datum umwandeln mit SimpleDateFormat

Meril

Mitglied
Hallo.
Ich versuche zur Zeit als Teil eines Programmes einen String in ein Datum umzuwandeln .(StringToDate). Dabei gibt es 3 verschiedene Datumstypen (2 deutsche, 1 englisches) die erkannt werden müssen (Typen als enum in Mediatype definiert) und dann korrekt umgewandelt werden.

Quellcode - Teil einer Utility-Klasse
[Java]
public DateType getDateType (String date){
SimpleDateFormat formatter;
try {
formatter = new SimpleDateFormat("TT.MM.JJJJ");
formatter.parse(date);
return DateType.DE1;
} catch (ParseException ex1) {
try {
formatter = new SimpleDateFormat("JJJJ-MM-TT");
formatter.parse(date);
return DateType.DE2;
} catch (ParseException ex2) {
try {
formatter = new SimpleDateFormat("MM/TT/JJJJ");
formatter.parse(date);
return DateType.EN;
} catch (ParseException ex3) {
System.out.println("falsches Format");
return DateType.UNKNOWN;
}
}
}
}

public Date StringToDate (String date) {
return StringToDate (date, getDateType(date));
}

public Date StringToDate (String date, DateType Type){
SimpleDateFormat formatter = null;
switch (Type) {
case DE1: formatter = new SimpleDateFormat("TT.MM.JJJJ");
case DE2: formatter = new SimpleDateFormat("JJJJ-MM-TT");
case EN: formatter = new SimpleDateFormat("MM/TT/JJJJ");
}
try {
return formatter.parse(date);
} catch (ParseException e) {
System.out.println("Parsefehler");
e.printStackTrace();
return null;
}
}[/Java]

Medientyp:

[Java]public enum DateType {
DE1,
DE2,
EN,
UNKNOWN
}

[/Java]
folgender mir unverständlicher Fehler tritt auf bei JUnit-Tests, der Quellcode lässt sich fehlerfrei mit Eclipse kompilieren:

Code:
java.lang.IllegalArgumentException: Illegal pattern character 'T'
	at java.text.SimpleDateFormat.compile(Unknown Source)
	at java.text.SimpleDateFormat.initialize(Unknown Source)
	at java.text.SimpleDateFormat.<init>(Unknown Source)
	at java.text.SimpleDateFormat.<init>(Unknown Source)
	at jverleihnix.ui.UtilDate.getDateType(UtilDate.java:19)
	at jverleihnix.ui.UtilDateTest.test(UtilDateTest.java:14)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Kann mir jemand bei der Lösung meines Problemes helfen?
 
Oh, dummer Fehler. Aber vielen Dank für die schnelle Antwort. Das Problem hat sich erledigt und der Fehler "Illegal pattern character 'T'" erscheint mir jetzt sinnvoll 🙂
 

Zurück
Oben