Heim  >  Artikel  >  Java  >  Wie konvertiert man EST-Zeitstempel in Java in GMT?

Wie konvertiert man EST-Zeitstempel in Java in GMT?

Barbara Streisand
Barbara StreisandOriginal
2024-11-12 16:36:02731Durchsuche

How to Convert EST Timestamps to GMT in Java?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn