转 Java事件与本地时间相差8小时解决

问题:

1.new Date() 得到的时间 和系统相差 相差8个小时

2.eclipse控制台打印的时间与系统相差 相差8个小时

3.log4j日志的时间与与系统相差 相差8个小时

上述问题其实是同一个问题。

原因:java获得的时区跟系统的时区不一样

解决方法如下:
转:http://www.huomo.cn/developer/article-a2a.html

1.在代码前加上下面这句话就行了:TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");TimeZone.setDefault(tz)

2.在tomcat中修改catalina.bat文件的 set JAVA_OPTS 在后面加上-Duser.timezone=GMT+08

3.修改注册表中的默认时区改成(GMT+08:00) 北京,重庆,香港特别行政区,乌鲁木齐

如果还不行看下:从正常的并且是相同系统的机器中导出HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones 项,然后导入到自己机器中 。

以上三种方法都是解决方法。

在修改时区的时候最好用代码看下JAVA获得的时区是什么时区,代码如下:

Properties props=System.getProperties();
Iterator iter=props.keySet().iterator();
while(iter.hasNext()) String key=(String)iter.next();
System.out.println(key+" = "+ props.get(key));
}

user.timezone= 就是JAVA获得的时区,然后再看操作系统的时区。去改注册表吧。

你可能感兴趣的:(Java-基础)