2010-04-12 193 views

回答

4

試試這個:

Date estTime = new Date(utcTime.getTime() + TimeZone.getTimeZone("EST").getRawOffset()); 

凡utcTime是UTC時間Date對象(如果你已經有了長遠價值 - 只是用它)

+0

我認爲使用Date類是不鼓勵的。 – 2010-04-12 19:13:55

+0

哇,太棒了!非常感謝你! – rd42 2010-04-12 19:18:05

+0

創建日曆可能相當昂貴,這是我不喜歡使用它。如果性能不是問題,使用它也是一種選擇。 – duduamar 2010-04-12 19:28:06

3
final Calendar c = Calendar.getInstance(TimeZone.getTimeZone("EST")); 
c.setTimeInMillis(longTime); 

其中longTime是自UTC時代以來的毫秒數。然後,您可以使用Calendar類的方法來獲取日期/時間的各個組成部分。

+0

非常感謝! – rd42 2010-04-12 19:19:25

1

rd42,你能給我多一點上下文嗎?

你說你有一個「UTC時間戳」。這是存儲在數據庫中嗎?它是一個字符串嗎?

我也許能爲您提供更多的答案,如果你可以給你想在工作這個上下文。


確定爲清晰起見,你的意思是,你必須一個代表UTC時間戳的長整型值。

所以在這種情況下,你要做的是以下幾點。

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

TimeZone utcTZ= TimeZone.getTimeZone("UTC"); 
Calendar utcCal= Calendar.getInstance(utcTZ); 
utcCal.setTimeInMillis(utcAsLongValue); 

現在您的日曆對象是UTC。

要顯示這雖然你會想要做類似如下:

import java.text.SimpleDateFormat; 
import java.util.Date; 

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz"); 
sdf.setTimeZone(utcTZ); 
Date utcDate= utcCal.getTime(); 
sdf.formatDate(utcDate); 

這將允許您在存儲爲一個長值UTC時區的時間戳讀取,並將其轉換到Java日曆或日期對象。

希望能讓你得到你需要的東西。

+0

該變量的類型爲long並帶有UTC時間戳。試圖將其從1271101959000改爲更友好的東西。 – rd42 2010-04-12 19:20:33