用于将秒转换为java中的日期和时间组合的代码

时间:2011-11-25 18:52:58

标签: java

我有几秒如下:

1320130800

我需要将值转换为日期和时间组合格式。格式化时我得到如下结果:

Tuesday,November 1,2011 2:00,AM

但正确的结果如下:

Tuesday,November 1,2011 7:00,AM

对于上述格式转换,我使用了以下代码:

 long millis = 1320130800*1000;
           Date date = new Date(millis);
           SimpleDateFormat sdf = new SimpleDateFormat("EEEE,MMMM d,yyyy h:mm a");
           String formattedDate = sdf.format(date);
           System.out.println(formattedDate);

任何人都可以指导我得到正确答案吗?

2 个答案:

答案 0 :(得分:5)

听起来只是时区问题 - 您需要为格式化程序设置时区:

sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

(请注意,在您的示例代码中,long millis = 1320130800*1000;不起作用,因为它在32位算术中执行乘法;您需要类似long millis = 1320130800L*1000;的内容。)

答案 1 :(得分:0)

请改用Calendar API。

获得Date对象后,构造一个Calendar对象(getInstance()返回一个带有默认时区的对象)并对其执行setDate(Date)并对其进行解析。

或者,您可以查看Joda Time API,因为它们易于使用。

问候!