双系统(Win Ubuntu)时间不一致的解决

在同一台电脑上装了ubuntu和windows双系统,但是每次进入win后时间总是不对,总是比当地时间晚8个小时。每次在win7下调整好之后,但是再一次进入win7系统后,时间又变回去了。原因是两个系统读取时间的机制不一样。

原因

Windows 与 Mac/Linux 缺省看待系统硬件时间的方式是不一样的:
Windows把系统硬件时间当作本地时间(local time),即操作系统中显示的时间跟BIOS中显示的时间是一样的。
Linux/Unix/Mac把硬件时间当作 UTC,操作系统中显示的时间是硬件时间经过换算得来的,比如说北京时间是GMT+8,则系统中显示时间是硬件时间+8。
这样,当PC中同时有多系统共存时,就出现了问题。
例如你的ubuntu设置的时区都为北京时间东八区,当前系统时间为9:00AM。则此时硬件中存储的实际是UTC时间1:00AM。这时你重启进入Windows后,你会发现windows系统中显示的时间是 1:00AM,比ubuntu中慢了八个小时。同理,你在Windows中更改或用网络同步了系统时间后,再到Ubuntu中去看,系统就会快了8小时。 在实行夏令时的地区,情况可能会更复杂些。

解决方法1:在Windows下修改为utc时间

方式1:在注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\
下中添加一项数据类型为REG_DWORD,名称为RealTimeIsUniversal,值设为1 的键值。

方式2:
打开win10的设置,点击“时间和语言”这个选项,可以看到“时区”这个选项默认是“北京时间”。我们将“北京时间”改为“(UTC)世界协调时”即可。

解决方法2:在ubuntu下修改为本地时间

方式1:
sudo gedit /etc/default/rcS
找到这一行:UTC=yes
改为 utc=no

方式2:
在ubuntu系统中,打开终端,输入以下指令:
timedatectl set-local-rtc 1 --adjust-system-clock
以上命令是将你的硬件时钟设置为本地时区。如要将硬件时钟设置为协调世界时(UTC):
timedatectl set-local-rtc 0
(这种方式在ubuntu18.04下测试可行。2019-4-20)

方式3:
先在ubuntu下更新一下时间,确保时间无误:
sudo apt-get install ntpdate
sudo ntpdate time.windows.com

然后将时间更新到硬件上:
sudo hwclock --localtime --systohc

2 comments

Leave a comment

Your email address will not be published. Required fields are marked *