最近发现一些新的windows操作系统中,JDK显示的时区不是正确的GMT+08的,而是默认的格林威治时间

原以为是系统时区设置不对,但发现系统时间正确,时区也正确,就是JDK的不正确

网上很多方法都是手动改tomcat设置,或者在代码中写死时区,这种做法都是治标不治本的

于是继续查找根本所在

后来几经比较终于发现问题所在

原来JDK1.5早期的版本对一些较新的操作系统的时区获取都是不正确的,比如Win7,win server 2008等

从JDK1.5.0_12后的版本就没有这个问题了,所以解决这个问题的最好方法是升级到JDK1.5的最新版本,或者直接升级到JDK1.6也可以。