Dieses Stück Code funktioniert einwandfrei in Windows, aber in Linux wirft einen java.text.ParseException:java.text.ParseException: unparseable Datum: "1901.01.01 00:00:00"
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", new Locale("es", "ES"));
df.setLenient(false);
Date date = df.parse("1901-01-01 00:00:00");
System.out.println(date);
Windows-Ausgabe:
Tue Jan 01 00:00:00 CET 1901
Linux Ausgabe:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.simontuffs.onejar.Boot.run(Boot.java:340)
at com.simontuffs.onejar.Boot.main(Boot.java:166)
Caused by: java.text.ParseException: Unparseable date: "1901-01-01 00:00:00"
at java.text.DateFormat.parse(DateFormat.java:357)
...
Wenn ein Entfernen der df.setLenient(false)
Linie, ist die Windows-Ausgabe gleich, ein d die Linux-Ausnahme verschwindet, die Linux-Ausgabe scheint jedoch falsch zu sein:
Ist jemand wissen, was vor sich geht?
Dank
Konfiguration:
Fenster: Win7 + jdk1.7.0_71
Linux: Ubuntu + jdk1.7.0_60
EDIT: Wie anolsi Problem ein Sommer sagte ist. Mit dem Datum "2015-03-29 02:00:01" wird die Parse-Ausnahme ausgelöst, in Windows und Linux, weil dieses Datum in Madrid nicht existiert (die Zeit wurde in Madrid von 2:00 Uhr auf 3:00 Uhr morgens geändert) dieser Tag). Das richtige Verhalten ist also das Linux-Verhalten. Das Windows JDK sollte die Ausnahme auslösen.
Ist es Oracle oder OpenJDK auf Linux? Sollte keinen Unterschied machen, aber nur für den Fall. – Thomas
Sollte kein Problem sein. Funktioniert gut für mich. – Optional
Könnte ein Problem sein, das zwischen u60 und u71 behoben wurde. Versuchen Sie, das JDK zu aktualisieren. – Thilo