0

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)但是,这是在我的机器上运行它时使用的。

当我在我的服务器上运行它时,它给了我:Fri, Sep 28, 2012 @ 9:03PM

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

4)所以,我试图使用 eventTimezoneOffset 来设置 Date 或 SimpleDateFormat 对象以表示正确时区时间的时间,而不管运行应用程序的服务器在哪里。

5) 我尝试在 SimpleDateFormat 上设置时区,但不确定如何在我拥有的几秒钟内使用 eventTimezoneOffset 来做到这一点。

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

4

1 回答 1

0

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

SimpleDateFormat sdf = new SimpleDateFormat("E, MMM dd, yyyy @ h:mmaa");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
于 2012-09-29T23:46:09.907 回答