电脑内部都有一个记录时间的RTC,这个实时时钟系统会自动运转,即使你已经关闭电源。 IBM PC兼容机大多采用DS12887这个芯片,内部存储时间,包括年,月,日,时,分。还包括世纪,解决了千年虫的问题,但是这个系统没有关于时区的记 录,时区的处理由操作系统才完成。
从这里已经可以引申出,产生双系统时间不一致的原因,Mac OS X采用UTC,就是说在电脑RTC系统中保存时间,Mac认为时UTC时间,OS X再根据系统的时区转换成本地时间给你看。
Windows使用Local time,就是说Windows系统认为RTC系统内保存的时间就是本地时间,不再根据时区作相应的转换了。Windows为什么不使用UTC,这个问题 微软官方也做过说明,因为早在DOS时代,就是使用本地时间,一直为了兼容性保留下来(历史的包袱)
从上面的说明可以看出,如果是北京时间东8区,就会相差8个小时了。
PS: 很多其他的Unix Like的系统可以设置采用UTC还是Local Time
知道了原因就知道怎么解决了
1 在Mac os x上把时区调整成冰岛,也就是常说的作冰岛人,冰岛是0时区,就是说本地时间和UTC一致,自然双系统就没有“时差”了。
负面问题,你生活在在错误的时间里面,上网和时间服务器对时就会把时间修正过来;有些系统在你登录的时候,会要求你校准时钟,发现你的时间错误拒绝你登录;你发出的邮件时间也许是错误的;如果你的电脑和手机或者其他的电子设备连接,还可能把他们的时钟也同步错误了
2 在OS X和windows两个系统里面都打开和时间服务器自动对时
这个办法也是经常使用的办法,但不是防止了“时差”,而是产生时差的时候通过Internet连接时间服务器修正过来,也还是由一定的问题,第一,如 果没有联网怎么办?还是错的。第二,在系统启动过程中,一直到没有开始对时之前,时间都是错误的,那时候保存信息的时间都是错误的,例如日志一类的东西。
3 Bootcamp widnows时间服务驱动
从一开始出现Bootcamp让Mac装上windows,Apple就知道这个问题,后来在Bootcamp加入了一个时间服务,这个东西没什么特别,还是需要联网对时,有时候还出点小乱子
4 还有一种方式,是一个在Mac OS X的补丁包
好像是让Mac使用本地时间,我们仔细研究过,从来没有安装过,为了Windows的时间去Hack Mac不值得
5 推荐的方式
windows虽然为了兼容性,一直沿用本地时间,但是在注册表中有一个设置可以让它使用UTC,这个正是我们需要的,修改注册表就好了。
让windows也使用Universal Time,这样即使在不联网的情况下,时钟仍然是正确的特别注意的是:取消Boot Camp的Apple时间服务,不然时不时Apple时间服务会把时间调正回去。
1)开始菜单,运行regedit
2)打开TimeZoneInformation,位置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
3)右击->创建一个新的DWORD,数值名称 RealTimeIsUniversal 数值数据 1 (十六进制) 注意大小写,修改完成确定并且把regedit关了。
4)打开时间设置,取消“自动与Internet时间服务器同步”
5)取消Apple时间服务,控制面板->管理工具->服务,里面有个“Apple时间服务”, 右击它然后选择属性,启动类型选择禁用、停止。
网友评论