首頁  >  文章  >  Java  >  如何在 Java 中將任何時區的時間戳記轉換為 GMT?

如何在 Java 中將任何時區的時間戳記轉換為 GMT?

DDD
DDD原創
2024-11-12 08:19:02499瀏覽

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

如何使用Java 處理日曆時區

問題:

問題:

您有一個時間戳您有一個時間戳記的應用程式可能源自任何時區。但是,資料必須傳送到假定資料始終為 GMT 的 WebService。您需要在使用者不知情的情況下將使用者的輸入時間從本地時區轉換為 GMT。

答案:
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;
    }
}

Java 的時區處理可能會令人困惑。雖然時間戳通常以 GMT 格式存儲,但 Calendar 類別預設使用系統當前的時區。若要解決此挑戰,請考慮以下事項:
  1. 此程式碼執行以下步驟:
  2. 取得使用者本地時區中的目前時間作為日曆物件。
  3. 建立一個新的 GMT 日曆物件。
  4. 計算使用者本地時間之間的偏移量時區和 GMT。
透過向使用者時間添加偏移量來調整 GMT 日曆。

產生的日曆物件現在表示 GMT 中的相同時間,無論使用者的時區為何。 利用此方法,您可以準確地將使用者輸入的時間從任何時區轉換為 GMT,確保資料與Web 服務。

以上是如何在 Java 中將任何時區的時間戳記轉換為 GMT?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn