1)所以,我有一个以秒为单位的日期和时间,时区也以秒为偏移量。
eventTime=13488880602
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来设置Date或SimpleDateFormat对象,以表示正确时区时间内的时间,而不管运行应用程序的服务器在哪里
5)我试图在SimpleDateFormat上设置时区,但不确定如何使用eventTimezoneOffset(以秒为单位)来完成。
6)需要澄清的是,这些事件可能发生在世界各地。自Epoch以来,每个事件都以秒为单位进行跟踪。因此,当只查看eventTime时,它将显示应用程序运行的任何时区。为了获得事件的确切时间,考虑到位置时区,提供了时区Offet。我只是不知道如何应用时区偏移。
使用SimpleDateFormat
实例的setTimeZone
方法设置时区:
SimpleDateFormat sdf = new SimpleDateFormat("E, MMM dd, yyyy @ h:mmaa");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));