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:
Kann mir jemand bei der Lösung meines Problemes helfen?
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?