这两天做一个web项目,数据库中有个字段为上次登录的时间,所以需要在用户登录的时候记录下时间 没用calendar 用了Date类,突然发现system.out.println(date)的时候时间比北京时间晚了8个小时(还是早了,反正是差8个小时) 仔细一看系统时间 完全正确,当时以为是jdk sb了下 调试了半天发现怎么都不对
而新建一个java project ,system.out.println(date)的结果却完全正确
后来才知道是tomcat服务器 默认时区问题
解决方法大体有2种
-》Date date=new Date();
DateFormat formatter=DateFormat.getDateTimeInstance();
//得到一个指定时区(中国是东8区的)的DateFormat 对象
TimeZone timezone=TimeZone.getTimeZone( "GMT+08:00 ");
//实例化时区对象
formatter.setTimeZone(timezone);
System.out.println(formatter.format(date)); //输出格式化后的时间
-》修改tomcat文件下的bin/catalina 文件 用记事本打开
找到set JAVA_OPTS=
改成 set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx800m -Duser.timezone=GMT+08