2012-01-19 95 views
2

我使用GMT /祖魯時間送時間到我的GWT客戶端,以指定爲每個字符串(即2012-01-19T16:29:18Z,或下午4時29分GMT)。如何在本地時區的瀏覽器中顯示此內容?因此,對於我在科技委,我希望看到上午10:29。GWT - 獲取瀏覽器時區/時間戳格式化

如果我沒有格式化,我會得到日期爲4:29 pm,我期望如果我使用TimeZone.createTimeZone(0)的TimeZone對象,我得到某個原因10:29 PM(不如預期的AM) 。我想我應該傳遞比0更有意義的東西,但是如何獲得瀏覽器正在運行的正確值?

Ĵ

+0

這可能很重要,我使用DateTimeFormat.getFormat的DateTimeFormat(「yyyy-MM-dd'T'HH:mm:ss'Z'」)從REST響應解析出來; – Joel

回答

2

你可以得到區偏移是使用瀏覽器設置:

Date d = new Date(); 
d.getTimezoneOffset(); 

它不會給你的時區的名字,我不認爲這是可能得到的。

你發送時間作爲時間戳或字符串?我發現最好的方法是將UTC時間戳發送到客戶端,然後使用DateTimeFormat/TimeZone將它們格式化爲我需要的任何區域。但我想,如果你解析包含偏移量的日期字符串,無論如何你最終會得到一個UTC時間戳。

+0

這有幫助。我意識到我的問題是,因爲Z(對於祖魯/ GMT時間)沒有得到解析爲日期的一部分,所以它假定服務器響應是在當地時間搞亂一切。你的回答幫助解決了這個問題。 – Joel

+0

,這似乎是過時,或者是你沒有使用'java.util.Date'? – Miquel

+1

供參考 - 這將返回*當前*時區偏移量。也就是說,適用於所用日期值的偏移量。它可能不是適用於所有日期和時間的偏移量,因爲許多時區將其偏移量轉換爲夏令時。 –

1

如果你想在GWT客戶端代碼的格式在瀏覽器中時區的時間,你應該從服務器將數據傳遞到客戶端作爲一個java.util.Date對象。