昨天遇到一个问题,公司有个flex web项目,用户在使用的时候遇到一个这样的问题:人员生日修改后总比选的日期少一天。
公司前端是flex web 后台是springmvc+hibernate .断点看了后发现前后台时间少了一小时。数据库保存的时间也是对的,但是前端显示却是少了一小时。
后来查到是夏时令的问题,即时区问题。
参考了很多博客后,在eclipse中修改
在eclipse中设置
在 首选项->Tomcat ->JVM Settings 项,添加如下几个JVM Parameters:
-Duser.timezone=GMT+08。
就不再产生这个问题了。之前试着添加过-Duser.timezone=Asia/Shanghai ,但是没有起作用,不知道是不是jdk版本的问题,也有的说是:
在 Eclipse 安装目录下找到 eclipse.ini 文件,编辑该文件输入启动参数:
-vmargs
-Duser.timezone=Asia/Shanghai
然后重新启动
这点没有测试,需要的自行测试。
第一次遇到这个问题,折腾了半天,最后终于解决了。
还有生产环境中解决办法:
安装tomcat服务:cp $CATALINA_HOME/bin/catalina.sh /etc/init.d/tomcat7,如果要修改java_opts,则直接修改/etc/init.d/tomcat7,增加一句JAVA_OPTS="$JAVA_OPTS -server -Xms512m -Xmx1024m -XX:MaxNewSize=256m -XX:PermSize=128M -XX:MaxPermSize=512m -Duser.timezone=GMT+08"即可。