2014-11-05 143 views
-1

我試圖讓使用TimeZone.getDefault()的localtimezone,服務器在CST時區運行,但每當我執行下面的代碼,我得到的輸出爲「星期三11月5日, 2014 03:52:22 GMT「但我需要CST的時區。我的代碼有問題嗎?時區問題

SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy hh:mm:ss zzz"); 

Date dtTimeStamp = dateFormat.parse((String) map.get("TimeStamps")); 

SimpleDateFormat dateFormat2 = new SimpleDateFormat("E MMM d, yyyy hh:mm:ss a zzz"); 

TimeZone tzDefault = TimeZone.getDefault(); 

dateFormat2.setTimeZone(tzDefault); 

dateFormat2.format(dtTimeStamp); 
+2

在未來,請[格式化你的代碼(http://stackoverflow.com/編輯幫助),使其更具可讀性。 – tnw 2014-11-05 16:01:54

+2

這段代碼沒有輸出任何內容,所以你在這裏詢問的內容並不明顯。 – jarnbjo 2014-11-05 16:48:41

回答

0

根據TimeZone.getDefault() JavaDoc

通常情況下,你會得到通過使用getDefault方法TimeZone,這個方法創建基於程序運行的時區時區。

所以,你必須明確提供的TimeZone你想

TimeZone tzDefault = TimeZone.getTimeZone("GMT"); 
+0

目前該程序運行在時區爲CST的服務器上,但我的代碼正在返回GMT。這就是問題。 – Balu 2014-11-05 16:36:50

+0

Humm,你的服務器和JRE版本是什麼? – kumako 2014-11-05 16:46:37

+0

操作系統:Win Server 2008 jre:1.5.0_05 – Balu 2014-11-05 17:08:27

0

如果TimeZone.getDefault()不返回CST,那麼你的服務器是不是在CST timzone,或者沒有配置爲這樣。

  • 使用user.timezone屬性值設置爲默認時區ID(如果可用):

    value returned fromTimeZone.getDefault()由以下因素決定。

  • 檢測平臺時區ID。平臺時區和ID映射的來源可能因實現而有所不同。
  • 使用GMT作爲最後的手段,如果給定或檢測時區ID是未知的。

您可以檢查您的服務器配置,也可以明確地得到CST時區:

TimeZone timeZone = TimeZone.getTimeZone("CST");