解决方式:
打开注册表时区的节点[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 即可。
打开注册表时区的节点[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 即可。