Heim > Java > javaLernprogramm > Wie konvertiere ich einen Zeitstempel von einer beliebigen Zeitzone in GMT in Java?

Wie konvertiere ich einen Zeitstempel von einer beliebigen Zeitzone in GMT in Java?

DDD
Freigeben: 2024-11-12 08:19:02
Original
534 Leute haben es durchsucht

How to Convert a Timestamp From Any TimeZone to GMT in Java?

So gehen Sie mit Kalenderzeitzonen mit Java um

Frage:

Sie haben einen Zeitstempel von Ihre Bewerbung, die aus einer beliebigen Zeitzone stammen kann. Allerdings müssen die Daten an einen WebService gesendet werden, der davon ausgeht, dass sie immer in GMT vorliegen. Sie müssen die Eingabezeit des Benutzers ohne dessen Wissen von seiner lokalen Zeitzone in GMT konvertieren.

Antwort:

Die Zeitzonenverarbeitung in Java kann verwirrend sein. Während Zeitstempel normalerweise in GMT gespeichert werden, verwendet die Calendar-Klasse standardmäßig die aktuelle Zeitzone des Systems. Um dieser Herausforderung zu begegnen, berücksichtigen Sie Folgendes:

import java.util.Calendar;
import java.util.TimeZone;

public class ConvertTimeZone {

    public static void main(String[] args) {
        // Example input time (EST)
        Calendar input = Calendar.getInstance(TimeZone.getTimeZone("EST"));
        input.set(2008, Calendar.MAY, 1, 18, 12, 0);

        // Create a Calendar in GMT
        Calendar gmt = convertToGmt(input);

        // Output the converted time (GMT)
        System.out.println(gmt.getTime()); // 2008-05-01 11:12:00 GMT
    }

    public static Calendar convertToGmt(Calendar cal) {
        Date date = cal.getTime();
        TimeZone tz = cal.getTimeZone();

        long msFromEpochGmt = date.getTime(); // Convert to milliseconds since epoch in GMT
        int offsetFromUTC = tz.getOffset(msFromEpochGmt);

        // Create a new Calendar in GMT and adjust for the offset
        Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
        gmtCal.setTime(date);
        gmtCal.add(Calendar.MILLISECOND, offsetFromUTC);

        return gmtCal;
    }
}
Nach dem Login kopieren

Dieser Code führt die folgenden Schritte aus:

  1. Ruft die aktuelle Zeit in der lokalen Zeitzone des Benutzers als Kalenderobjekt ab.
  2. Erstellt ein neues Kalenderobjekt in GMT.
  3. Berechnet den Versatz zwischen der lokalen Zeitzone des Benutzers und GMT.
  4. Passt den GMT-Kalender an, indem der Versatz zur Zeit des Benutzers hinzugefügt wird.
  5. Das resultierende Kalenderobjekt stellt jetzt dieselbe Zeit in GMT dar, unabhängig von der Zeitzone des Benutzers.

Mit diesem Ansatz können Sie die Eingabezeit des Benutzers von jeder Zeitzone genau in GMT konvertieren. Gewährleistung der Datenkompatibilität mit dem WebService.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich einen Zeitstempel von einer beliebigen Zeitzone in GMT in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage