如何使用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中文網其他相關文章!