android虚拟机时间与系统时间不符合的解决

使用Android模拟器的时候发现系统时间一直和windows系统的不一致,之前一直没在意。后来需要根据某种格式打印当前时间,于是我写了这段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Calendar calendar = Calendar.getInstance();  

int year = calendar.get(Calendar.YEAR);

int month = calendar.get(Calendar.MONTH);

int day = calendar.get(Calendar.DATE);

int hours = calendar.get(Calendar.HOUR_OF_DAY);

int minutes = calendar.get(Calendar.MINUTE);

int seconds = calendar.get(Calendar.SECOND);

// Log.e("now_time",year+"-"+month+"-"+day+" "+hours+":"+minutes+":"+seconds);

System.out.println(year + "-" + month + "-" + day + " " + hours + ":"
+ minutes + ":" + seconds);

结果比正常时间慢了8个小时,一开始想这应该是虚拟机时区设定问题,也没在意。但是偶然把这段代码放在普通java工程中运行结果也是比正常时间慢了8个小时。这次我想也许是eclipse参数设置不正确,但是直接用命令行编译运行也是一样的结果。最后判定不是eclipse的问题,应该是java虚拟机的问题。

谷歌一下,发现是注册表出现异常。

注册表对应项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

在时间正常的机子上拷到自己机子上导入,时间正常了。

遇到一样问题的可以导入附件的注册表文件,xp下可用,vista和win7请自己找正常的注册表。

注册表文件下载:[Time_Zones_XP.rar]