So konvertieren Sie Zeitzonen mithilfe von Java-Zeitstempeln
In diesem Szenario haben Sie einen Zeitstempel in der EST-Zeitzone und müssen ihn konvertieren an GMT für einen Webservice-Anruf. Hier ist eine ausführliche Erklärung:
Konvertierung von EST in GMT
Das Problem entsteht, weil zunächst davon ausgegangen wird, dass der Zeitstempelwert in GMT vorliegt, er aber tatsächlich in a liegen kann andere lokale Zeitzone (in diesem Fall EST). Um den Benutzerparameter von EST in GMT umzuwandeln, müssen Sie den Zeitunterschied zwischen den beiden Zeitzonen berücksichtigen.
Verwenden der Kalenderklasse
Sie verwenden die Calendar-Klasse, um den Zeitstempel zu manipulieren. Sie sollten sich jedoch darüber im Klaren sein, dass die Calendar-Klasse immer in Millisekunden seit der Epoche arbeitet, unabhängig von der von Ihnen angegebenen Zeitzone. Das bedeutet, dass beim Erstellen eines Kalenders aus einem Zeitstempel mithilfe von Calendar.getInstance(GMT_TIMEZONE) das zugrunde liegende Datum nicht an die GMT-Zeitzone angepasst wird.
Lösung: Anpassung an den Zeitzonenversatz
Um den Zeitstempel genau in GMT umzuwandeln, müssen Sie den Zeitzonenversatz berücksichtigen. Das folgende Code-Snippet bietet eine Lösung:
public static Calendar convertToGmt(Calendar cal) { Date date = cal.getTime(); TimeZone tz = cal.getTimeZone(); // Compute milliseconds since epoch in GMT long msFromEpochGmt = date.getTime(); // Get offset from UTC in milliseconds at the given time int offsetFromUTC = tz.getOffset(msFromEpochGmt); // Create a new Calendar in GMT and adjust the date with the offset Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); gmtCal.setTime(date); gmtCal.add(Calendar.MILLISECOND, offsetFromUTC); return gmtCal; }
Beispielausgabe
Wenn Sie die aktuelle Zeit (in EDT) an die Methode „convertToGmt“ übergeben, erhalten Sie die Folgende Ausgabe:
DEBUG - input calendar has date [Thu Oct 23 12:09:05 EDT 2008] DEBUG - offset is -14400000 DEBUG - Created GMT cal with date [Thu Oct 23 08:09:05 EDT 2008]
Dies zeigt, dass 12:09:05 EDT erfolgreich in 08:09:05 GMT konvertiert wurde.
Das obige ist der detaillierte Inhalt vonWie konvertiert man EST-Zeitstempel in Java in GMT?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!