Java-Zeitzone: Warum Offset benötigt wird
Meine Anforderung ist wie folgt:
Ich spare Zeit in Millisekunden in der Datenbank und in der Zeitzone. Zum Beispiel ist die Zeit in Millisekunden1223123123232
in lang und zeitzone istAsia/Calcutta
. Ich muss es konvertierenAfrica/Asmara
Zeitzone.
long l = 1223123123232l;
TimeZone tz = TimeZone.getTimeZone("Asia/Calcutta");
long tzOff = tz.getOffset(l);
java.util.Date d = new Date(l-tzOff); // WHY THIS??
DateFormat df = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
df.setTimeZone(TimeZone.getTimeZone("Africa/Asmara"));// required timezone
String s = df.format(d);
System.out.println(s);
Um zu überprüfen, beziehe ich mich auf dieses:Verknüpfung
Meine Frage ist:
Wenn die Zeitzone nur die Darstellung der Zeit in verschiedenen Formaten ist (geografische Gebiete versetzt von GMT), warum muss ich die Versatzzeit von der tatsächlichen Zeit subtrahieren?(l-tzOff)
?Warum kann ich die in der Datenbank gespeicherte Zeitzone nicht ignorieren und nur die Zeitzone berücksichtigen, in die ich das Datum konvertieren möchte?So etwas wie:
long l = 1223123123232l;
java.util.Date d = new Date(l);
DateFormat df = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
df.setTimeZone(TimeZone.getTimeZone("Africa/Asmara"));// required timezone
String s = df.format(d);
System.out.println(s);
Meine Systemzeitzone istAsia/Calcutta
Ich möchte ein Datum in konvertierenAfrica/Bujumbura
Zeitzone bisEurope/Vatican
timezone.Der obige Code funktioniert in diesem Fall nicht? Warum ist das so?