日期:2014-05-20  浏览次数:20587 次

java在vista下的时间问题
今天工作时,发现一个以前能工作的程序出了点问题:

用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 ......