在WIN7下发现一些Java的程序获取系统时间比真实时间差了8个小时,怀疑是Java程序沿用了低版本的JDK,获取时间时取的GSM 0时区,而中国是GSM +8,所以查了8个小时,解决办法如下:
?
修改如下:
?
Date d = new Date(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss "); sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); System.out.println(sdf.format(d));
?
??或者:
???? Calendar now = Calendar.getInstance();
now.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));//important
System.out.println(now.get(Calendar.HOUR_OF_DAY));
System.out.println(now.get(Calendar.MINUTE));
System.out.println(now.get(Calendar.SECOND));
?
?
这样就可以了。
关键就是设置TimeZone: TimeZone.getTimeZone("Asia/Shanghai")