今天工作时,发现一个以前能工作的程序出了点问题:
用java取出的时间,比系统时间早了8小时...
代码如下:
Calendar c = Calendar.getInstance();
DateFormat df =new SimpleDateFormat( "HH:mm:ss ");
return df.format(c.getTime());
后来发现,是java设置的默认时区变成了id= "GMT ",而北京的时区应该是GMT+8:00 狂汗...
优化后代码如下:
Calendar c = Calendar.getInstance();
DateFormat df =new SimpleDateFormat( "HH:mm:ss ");
df.setTimeZone(zone);
TimeZone zone = new SimpleTimeZone(28800000, "Asia/Shanghai ");
return df.format(c.getTime());
难道是vista对jdk1.5的支持有问题?
带着这个疑问,让同事的vista试了一下,果然都是 id= "GMT " 。
这无疑是jdk1.5 在vista下的bug
不是jdk1.6是否有此问题。
------解决方案--------------------
手动设置系统变量user.timezone就可以
java.exe ........ -Duser.timezone=GMT+8:00 ......