1月 242011
 

曾经装过Windows和Linux或OS X双系统的人肯定都遇到过这样的情况:在Linux或OS X系统中设置好时区(+8)和系统时间以后,当再次重启返回Windows系统中后,会发现Windows系统的时间会错误,而误差刚好是在Linux或OS X系统中设置的时区数。

出现这种情况的原因是由于两种系统在设定时间时均以主板CMOS中的时间为依据,却又使用不同的时间计算标准。具体来说:

Linux和苹果操作系统(UNIX变种)以当前主板CMOS时间做为国际协调时间(UTC),再根据系统设置的时区来最终确定当前系统时间。比如时区设置为UTC+8(北京时间)而当前CMOS时间为02:00,那么系统会将这两个时间相加,显示在桌面的当前系统时间为10:00。而Windows 操作系统则直接把CMOS时间认定为当前显示时间,不根据时区转换。

* Windows把系统硬件时间当作本地时间(Local Time),即操作系统中显示的时间跟CMOS中显示的时间是一样的。
* Linux/Unix/Mac把CMOS时间当作UTC,操作系统中显示的时间是硬件时间经过换算得来的,比如说北京时间是UTC+8,则系统中显示时间是CMOS时间+8。
这样,当电脑中同时有多系统时,就出现了问题。假如你的Linux和Windows中设置的时区都为北京时间东八区,而你在Linux中把当前系统时间更改为10:00,则此时硬件中存储的实际是UTC时间02:00。这时你重启进入Windows后,你会发现windows系统中显示的时间是02:00,比Linux中慢了八个小时。同理,你在Windows中更改或用网络同步了系统时间后,再到Linux中去看,系统就会快了8小时。那怎么来解决这种冲突呢?一种就是让Windows把CMOS时间当作UTC,与Linux/Unix /Mac保持一致。另一种就是让Linux/Unix/Mac把系统时间当作本地时间,与Windows保持一致。


一、下面先介绍修改windows的设置,(以Windows7 64-bit为例):

使用组合键Win+R打开运行窗口,输入regedit 回车,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation”,右键新建New > DWORD (32-bit) Value,命名为RealTimeIsUniversal,键值为1
modify_system_timezone1

添加好的记录如下图所示
modify_system_timezone2

二、Linux系统中的修改方法

编辑/etc/default/rcS,把其中的“UTC=yes”改成“UTC=no”,保存后重启系统就可以了。


更新:Windows7 64-bit系统中不知道什么原因系统时间会自动增加8小时,即使是已经通过网络同步以后,10分钟左右就会自己重置回去。具体原因还在核查中……

更新二:原因查明,原来是Windows系统未能修改CMOS时间导致网络同步时间后又被Windows系统自动修改回去,到BIOS中把时间调前8个小时后问题解决!

  2 条评论 到 “如何修正因Windows和Linux或者Mac双系统引起的系统时间错误”

  1. Windows7 64-bit系统中不知道什么原因系统时间会自己重置回去 的具体原因, 我找了好几天了, 烦死我了。
     
    我是黑苹果lion 10.7.2   +  win7 x64   +  openSuSE,   win7下就是用的realtimeisuniversal这个注册表hack

 评论

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*(必需)

*(必需)

Time limit is exhausted. Please reload CAPTCHA.

8,142 人阅读