Der folgende Code verhält sich nicht wie erwartet, wenn eine Daten Konvertierung in einen String, und zurück zu einem Zeitpunkt unter Java 7 hier:SimpleDateFormat nicht reversibel?
final long epochTime = 1489669024142L;
String pattern = "ddMMMYY HH:mm";
final SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.ENGLISH);
final Date inputDate = new Date(epochTime);
final String date1 = format.format(inputDate);
final Date date2 = format.parse(date1);
Die Ausführung gibt mir: Klar
inputDate: Thu Mar 16 13:57:04 CET 2017
date1: 16Mar17 13:57
date2: Sun Jan 01 13:57:00 CET 2017
Es gibt hier einen Unterschied von 3 Monaten, während ich einen Unterschied von 4 Sekunden erwartet habe.
Ich verwende java.util.Date
, und kann JodaTime nicht verwenden.
Irgendeine Idee, wo dieser große Unterschied herkommt?
Ich denke, es gibt Zeitzone Unterschied epochTime Wert und Ihre lokale. Wenn ich drucke, zeigt es an, dass die Zeit 2 Stunden länger ist als deine, weil meine Zeitzone anders ist als deine. – javasenior
Ein Unterschied in der Zeitzone kann den Unterschied ausmachen, den Sie feststellen, aber ich frage nach dem Unterschied von 3 Monaten. Es gibt keine 3-Monats-Zeitzone: D – Jiehong
sicher: D. Lass mich nochmal nachsehen. – javasenior