我遇到了以下問題,當我在虛擬linux服務器上安裝我的webapp的戰爭時出現了這個問題。那就是:我的服務器系統時間似乎是正確的,其實打字日期殼出來有:如何在Java中設置默認時區並控制日期存儲在數據庫中的方式?
Mon Apr 11 11:47:30 CEST 2011
這是我的「掛鐘時間」。即使MySQL的正常工作,如果我現在要做的(選擇),我得到:
mysql> select now()
-> ;
+---------------------+
| now() |
+---------------------+
| 2011-04-11 11:52:57 |
+---------------------+
1 row in set (0.01 sec)
但我的應用程序(Spring + Hibernate的上的Java6 + tomcat的6)將保存在數據庫裏的每個日期與GMT時區(和時間與GMT的差異正確地抵消了,這是好的)。現在的問題是,我與GMT顯示所有日期,即使我做的:
static final DateFormat format = new SimpleDateFormat(
"dd/MM/yyyy 'alle' HH:mm", Locale.ITALY);
我沒有得到正確的時間偏移,但他們仍然在GMT,他們顯示GMT,如果我把Z(即顯示時區)。
在Windows下,我將日期值存儲在mySQL的本地時區中。所以在我開發的Windows機器上,我將在CEST中擁有所有的日期。這很煩人,因爲我不知道如何預測系統的行爲方式,我必須進行無聊的測試並弄清楚如何改變這一點。
你見過這個問題嗎?如何處理它?
這很好。無論如何,我如何控制hibernate/mysql存儲日期的方式?我的意思是我注意到在Linux上它使用了Windows CEST上的GMT。我想把這一切都設置爲格林尼治標準時間,這樣沒有人會感到困惑。 – gotch4 2011-04-11 13:15:26
@ gotch4:請看這篇文章http://stackoverflow.com/questions/5617459/convert-utc-time-t0-local-time-in-java-or-groovy/5618268#5618268。 – 2011-04-11 14:17:20