Java - 将TimeZone考虑在内的格式DateTime

时间:2012-09-29 23:27:04

标签: java date timezone

1) 所以,我有一个日期和时间,以秒为单位给我,时区偏移量也以秒为单位。

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 PM

由于我的服务器和我的机器存在时差。

4) 因此,我试图使用eventTimezoneOffset来设置Date或SimpleDateFormat对象,以表示正确时区时间内的时间,无论运行应用程序的服务器位于何处。

5) 我尝试在SimpleDateFormat上设置时区,但不确定如何使用eventTimezoneOffset在几秒钟内完成它。

6) 为了澄清,这些事件可以发生在世界各地。自Epoch以来,每个事件都在几秒钟内被跟踪。因此,当仅查看eventTime时,它将显示应用程序运行的任何时区。为了获得事件的确切时间,计算位置时区,提供timezoneOffet。我只是不确定如何应用timezoneOffset。

1 个答案:

答案 0 :(得分:0)

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

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