有没有遇到过这样的情况:数据库里的是时间是“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"。