首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

解决win7上使用jdk1.5,时间差8小时的有关问题

2012-10-21 
解决win7下使用jdk1.5,时间差8小时的问题解决方式:打开注册表时区的节点[HKEY_LOCAL_MACHINE/SOFTWARE/Mic

解决win7下使用jdk1.5,时间差8小时的问题
解决方式:
打开注册表时区的节点[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Time Zones/China Standard Time]

添加:
MapID=-1,75

-------------------------------------------
诉苦:
在 win7 下,打印出来的日志,时间一直差 8 小时,极郁闷。
今天有空,想看看问题在哪里。

查了半天,好多人在问这问题,但没找到合适的解决方式。

特别是这里,看了半天,好象不好用。
http://topic.csdn.net/u/20100507/14/c2c0ec6a-fc12-4ba6-ad2d-3c070c04266c.html?1537756366

1、
试试JDK DST Timezone Update Tool
http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html#timezone
http://java.sun.com/javase/tzupdater_README.html

评价:试了一下,这个工具只是添加一些 timezone 的信息,没作用。

2、
找到Java目录下的

依次: \jre\lib\zi\Etc

  \jre\lib\zi

  \jdk1.6.0_18\jre\lib\zi\Etc

  \jdk1.6.0_18\jre\lib\zi

下找到GMT文件,删除之(可以备份一下,以防万一),然后复制一份GMT-8并重命名为GMT替换原来的GMT
GMT-8在Etc目录下

评价:
要用 GMT+8 文件来替换。但,这样强行改 GMT,担心什么时候引发其它问题。

-------------------------------------------
我自已的解决方案:
在启动类的最开始,添加如下代码:
static {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
}

但总觉得这样也不是王道。

-------------------------------------------
闲着也是闲着,继续找,终于找到如下两篇文章:

-------------------------------------------
参考1:

先找到这里
http://www.blogjava.net/Simmons/articles/336120.html
“Display“=“(GMT+08:00) 北京,重庆,香港特别行政区,乌鲁木齐”

但其将 Display 从 UTC 改为 GMT,让我犹豫

google:win7 java TimeZone


---------------------------------------
参考2:

解决win7下使用jdk1.5,时间差8小时的问题 - Nonetracer的专栏
http://blog.csdn.net/Nonetracer/article/details/5718796


其他的不管,先把MapID键加上再说。加上后,再运行我那个取系统时间的测试程序,OK!问题解决!

google: java1.5 timezone utc

---------------------------------------

终于解决了,擦汗。

---------------------------------------
原因:
win7 使用 UTC 时间,而不是 GMT 时间。
java6 可以认到,呃,不知是用哪种方式认到的。
java5 认不到,貌似用的是注册表来判断:
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Time Zones/China Standard Time]
MapID=-1,75

添加上   MapID=-1,75 即可。

热点排行