有沒有遇到過這樣的情況:數據庫里的是時間是“1991-4-14”,但是Java取出來后就成了“1991-4-13”。
解決方法一:
先把時區設成GMT,把 根據夏時制自動調節時鍾 的選項去掉。
再把時區改回來。
解決方法二:
在取日期之前,加入如下代碼:
TimeZone.setDefault(TimeZone.getTimeZone("GMT+08"));
解決方法三:
如果涉及的地方比較多,方法二改動起來就比較麻煩。
還有個更簡單的:在JVM啟動的時候,加入參數 -Duser.timezone=GMT+08
【網摘】
我這次工作將幾十年的資料入庫,發現問題都出現在1987到1991年的四月(86年是五月)。
剛才從goole查了一下,我國實行夏時制剛好也是從1986年到1991(http://www.time.ac.cn/time/concept/6.htm)。
所以我大膽估測,java其實已經注意到中國時制(CST)的夏令時了,當運行到那個星期日要轉為夏令時的時候,卻把兩國的CST搞混,美國的CDT就出來了。
又或者java沒有錯,那個"CDT"就是中國的"CDT"。