问题描述
不管是在Windows还是Ubuntu中设置了正确时间,在切换操作系统的时候,还是会出现时间不同步的情况
原因是Windows和Ubuntu在默认情况下看待硬件时间(主板上的BOIS显示的时间)的方式不一样
Windows把系统硬件时间当作本地时间(Local time),即操作系统中显示的时间跟BIOS中显示的时间是一样的
Linux/Unix/Mac把硬件时间当作UTC(Universal Time Coordinated,协调世界时),操作系统中显示的时间是硬件时间经过换算得来
假如你的Ubuntu和Windows中设置的时区都为北京时间东八区,而你在Ubuntu中把当前系统时间更改为9:00AM
。则此时硬件中存储的实际时间是1:00AM
。这时你重启进入Windows后,你会发现 windows系统中显示的时间是1:00AM
,比Ubuntu中慢了八个小时。同理,你在 Windows中更改或用网络同步了系统时间后,再到Ubuntu中去看,系统就会快了8小时
解决方法
更改Ubuntu
转为Local Time
如果是Ubuntu16.04之前的版本,只需要将Ubuntu的UTC时间切换成Local Time
可以直接编辑配置文件,将/etc/default/rcS
文件中的UTC=yes
改成UTC=no
sudo gedit /etc/default/rcS
如果想要快速修改配置文件
sudo sed -i 's/UTC=no/UTC=yes/' /etc/default/rcS
使用ntpdate校准时间
如果是Ubuntu16.04,那么配置文件中可能没有UTC=yes
,这时候可以用ntpdate校准时间
安装ntpdate
sudo apt-get install ntpdate
校准时间
sudo ntpdate time.windows.com
如果你是安装的Windows+Ubuntu双系统,需要将时间更新到硬件上,以免Windows的时间不对
sudo hwclock --localtime --systohc
更改Windows
如果要让Windows把硬件时间当作UTC,在CMD窗口(快捷键Win+R,输入cmd,回车)中输入如下命令,可以快速编辑注册表
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
或者直接编辑注册表,打开注册表编辑器(快捷键Win+R,输入regedit,回车),并找到一下目录位置
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/TimeZoneInformation/
添加一项类型为REG_DWORD
的键值,命名为RealTimeIsUniversal
,值为1
,重启后时间即回复正常