2012-09-29 79 views
0

1) 所以,我认为,是给我在几秒钟内,与时区在几秒钟内偏移以及日期和时间。爪哇 - 格式日期时间考虑TimeZone的考虑

EVENTTIME = 1348880602
eventTimezoneOffset = -180

2) 我打印了这一点,像这样:

Date date = new Date(eventTime); 
SimpleDateFormat sdf = new SimpleDateFormat("E, MMM dd, yyyy @ h:mmaa"); 
System.out.println(sdf.format(date)); 

主要生产:星期五,2012年9月28日@下午10时03

3) 但是,这是当我在我的机器上运行它。

当我在我的服务器上运行它,它给了我:星期五,2012年9月28日@下午9点03

因为我的服务器和我的机器上的时间差。

4) 所以,我试图用eventTimezoneOffset设置日期或SimpleDateFormat的对象来表示的时间在正确的时区的时间,无论在哪里运行应用程序的服务器是。

5) 我试图做此设置SimpleDateFormat的时区,但不知道如何在我几秒钟的使用eventTimezoneOffset做到这一点。

6) 为了澄清,该事件可以发生在世界各地。每个事件都在Epoch以秒为单位进行跟踪。因此,在查看eventTime时,它将显示应用程序运行的任何时区。要获取事件的确切时间,请考虑位置时区,提供timezoneOffet。我只是不知道如何应用timezoneOffset。

回答

0

组使用SimpleDateFormat实例的setTimeZone方法的时区:

SimpleDateFormat sdf = new SimpleDateFormat("E, MMM dd, yyyy @ h:mmaa"); 
sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
+0

好吧,我试着这样做,这就造成了一个时间:周六,2012年9月29日@ 1:00 AM。我想要做的是使用时区偏移量,以便我可以在发生事件的区域显示事件时间,而不管运行应用程序的服务器位于何处。合理? – user1329237

+0

你应该能够在你提出的问题中看到你的问题的解决方案。坚持UTC的日期和时间是一个好习惯,因为它是一个全球性的固定参照点。为了根据UTC进行调整,还必须保持适当的区域设置(以某种方式),以便您的代码可以确定目标偏移量。如果您确定您的应用程序将只在一个时区使用,那么你不必坚持该信息(您可以使用该时区作为一个普遍的默认值)。但是,如果您的应用可能跨越很多地区,则还需要保留区域设置和时间戳。 – scottb