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


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

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM