2012-09-29 81 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