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

如何在 Java 中將 EST 時間戳記轉換為 GMT?

Barbara Streisand
Barbara Streisand原創
2024-11-12 16:36:02727瀏覽

How to Convert EST Timestamps to GMT in Java?

如何使用Java 時間戳轉換時區

在這種情況下,您有一個EST 時區的時間戳,需要將其轉換到GMT 進行Web 服務呼叫。詳細解釋如下:

從EST 轉換為GMT

出現問題的原因是時間戳值最初被假定為GMT,但實際上可能是不同的本地時區(本例為EST)。要將使用者的參數從 EST 轉換為 GMT,您需要考慮兩個時區之間的時差。

使用日曆類別

您正在使用Calendar 類別來操作時間戳記。但是,您應該注意,無論您指定的時區如何,Calendar 類別始終以紀元以來的毫秒為單位工作。這意味著,當您使用 Calendar.getInstance(GMT_TIMEZONE) 從時間戳記建立日曆時,基礎日期不會調整以符合 GMT 時區。

解決方案:調整時區偏移

要準確地將時間戳轉換為 GMT,您需要考慮時區偏移。以下程式碼片段提供了一個解決方案:

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;
}

範例輸出

如果將當前時間(以EDT 為單位)傳遞到ConvertToGmt 方法中,您將得到以下輸出:

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]

這表示12:09:05 EDT 已成功轉換為08:09:05 GMT。

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

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