在Eclipse中新建Java类,自动生成如下注释.
/**
* @TODO 测试当前时区
* @author yeshaoting
* @creatTime: 2010-12-12 下午11:52:10
* @belongTo: com.jarg.test
* @version 1.0
*/
其中,createTime这项为2010-12-12 下午11:52:10
比当前系统时间差不多慢了八个时间.
在网上一查,才知道是因为注册表出问题了.
将下面附件中的注册表文件导入注册表并覆盖其中注册表文件就可以了.
分析:
未使用上述方法前,执行以下代码后.
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai")); /* 修正时区 */
TimeZone.getTimeZone(new TimeZone().getID()); /* 获取当前时区相关信息 */
//TimeZone.getDefault(); /* 跟上句一样的效果,获取当前时区相关信息 */
得到结果:
sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
由id值得知,时区正确(或者说是修正过来了,因为Eclipse默认是GMT),重启Eclipse后,新建一个类进行测试,结果还是不对.
于是,按照上述方法后,问题解决.
再分析:
一切都正常后,我在程序中执行下面代码
TimeZone.setDefault(TimeZone.getTimeZone("GMT")); /* 修正时区 */
再重启Eclipse,然后新建类测试,结果还是正确的.
不知道这是不是能得出结论:
Eclipse并非通过TimeZone.getDefault();或TimeZone.getTimeZone(new TimeZone().getID());来读取时区?