有没有遇到过这样的情况:数据库里的是时间是“1991-4-14”,但是Java取出来后就成了“1991-4-13”。

解决方法一:

先把时区设成GMT,把 根据夏时制自动调节时钟 的选项去掉。

再把时区改回来。

  Java —— 时区(夏令时)问题-LMLPHP

解决方法二:

在取日期之前,加入如下代码:

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"。

05-11 19:34