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。
答案 0 :(得分:0)
使用SimpleDateFormat
实例的setTimeZone
方法设置时区:
SimpleDateFormat sdf = new SimpleDateFormat("E, MMM dd, yyyy @ h:mmaa");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));