2014-10-31 51 views
1

我有一個歐洲/莫斯科時間在我的Mageia 4java zoneinfo有什麼問題?

這樣

System.out.println(new java.util.Date()); 
System.out.println(System.getProperty("user.timezone")); 

回報

Fri Oct 24 13:43:22 GMT+03:00 2014 
GMT+03:00 

如果我設置系統日期在2014年10月24日

代碼

且該代碼返回

Sun Oct 26 14:44:26 GMT+03:00 2014 
GMT+03:00 

如果我在26.10.2014設置系統日期

以我的觀點來看,它是java zoneinfo系統的錯誤行爲。 我下載了tzupdater並運行它,文件Europe/Moscow已更新,現在它的大小爲705 kB。

我試試下面的代碼:

TimeZone.setDefault(TimeZone.getTimeZone("Europe/Moscow")); 
       System.out.println(new java.util.Date()); 
       System.out.println(java.util.TimeZone.getDefault()); 

,並返回

Fri Oct 24 15:10:34 MSK 2014 
sun.util.calendar.ZoneInfo[id="Europe/Moscow",offset=10800000,dstSavings=0,useDaylight=false,transitions=79,lastRule=null] 

Sun Oct 26 15:32:03 MSK 2014 
sun.util.calendar.ZoneInfo[id="Europe/Moscow",offset=10800000,dstSavings=0,useDaylight=false,transitions=79,lastRule=null] 

爲什麼會這樣?爲什麼在這兩種情況下抵消是相同的?

+0

tzupdater顯示它正在更新到哪個版本? – 2014-10-31 12:06:14

+0

掛起 - 如果你的'user.timezone'值只是「GMT + 03:00」,那麼是的,它將始終顯示GMT + 03:00 ...因爲它不*使用歐洲/莫斯科。所以這是'user.timezone'正在被填充的地方,而不是當前的數據庫。 – 2014-10-31 12:07:39

+0

tzupdater在2014i版本中更新區域。 – wolandec 2014-10-31 12:27:12

回答

2

問題糾正時間,以及通過將正確的時區的定義來解決。

TimeZone.setDefault(TimeZone.getTimeZone("Europe/Moscow")); 
+0

這種方法仍然適合你嗎?因爲我猜我們遇到了同樣的問題,並且我嘗試了您的解決方案,但它對我無效,仍然需要一小時... – tonix 2014-12-13 20:43:01

+0

您是否更新了java時區? – wolandec 2014-12-14 21:18:49

+0

是的,我發表了評論後做了它,現在它的工作! :) – tonix 2014-12-14 21:30:09

0

你的第二個試驗(2014年10月26日)是改變冬季後,所以你可能需要通過-1小時