2010-04-12 198 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