从Ubuntu切换到Windows 10后,时钟显示错误的时间

我在UEFI模式下启动了双启动Windows 10和Ubuntu 16.04(安全启动关闭)。 我在BIOS中的时间是正确的。

当我启动到Ubuntu然后启动到Windows 10时,它显示错误的时间。 我必须在Windows 10中手动或通过互联网进行更正,当我重新启动到Windows 10时,这不是问题。 时钟将显示正确的时间。 然后当我重新启动到Linux时,时钟是正确的,但切换回Windows 10,时钟再次混乱。

多个引导系统时间冲突

操作系统在主板上的硬件时钟中存储和检索时间,以便即使系统没有电源也可以跟踪时间。 大多数操作系统(Linux / Unix / Mac)默认将时间作为UTC存储在UTC上 ,尽管某些系统(特别是Microsoft Windows)将时间作为“本地”时间存储在硬件时钟上。 如果两个系统以不同方式查看硬件时钟,则会导致双引导系统出现问题。

将硬件时钟设置为UTC的优点是,在时区之间移动时或夏令时(DST)开始或结束时,您不需要更改硬件时钟,因为UTC没有DST或时区偏移。

将Linux更改为使用本地时间比将Windows更改为使用UTC更容易,更可靠,因此双启动Linux / Windows系统倾向于使用本地时间。

由于Intrepid(8.10),UTC = yes是默认值。

解决方案1:使Windows使用UTC

注意 :此方法最初在Windows Vista和Server 2008上不受支持,但在Vista SP2,Windows 7,Server 2008 R2和Windows 8 / 8.1中都有回来。

使MS Windows计算从硬件时钟开始的时间为UTC。

使用以下内容创建名为WindowsTimeFixUTC.reg的文件,然后双击它以将内容与注册表合并:

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=dword:00000001 

注意 :Windows Time服务仍会将本地时间写入RTC,无论上面的注册表设置是否关闭,因此使用此命令禁用Windows时间服务非常方便(如果在Windows中仍需要时间同步,则使用任何第三方时间)同步解决方案):

 sc config w32time start= disabled 

扭转变化

您可以创建包含以下内容的文件,然后双击它以合并原始更改,如上所述:

 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=- 

如果禁用了Windows时间服务,请使用以下命令再次启用它:

 sc config w32time start= demand 

解决方案2:让Linux使用“本地”时间

告诉您的Ubuntu系统硬件时钟设置为“本地”时间:

Pre-Ubuntu 15.04系统(例如Ubuntu 14.04 LTS):

  1. 编辑/ etc / default / rcS
  2. 添加或更改以下部分

     # Set UTC=yes if your hardware clock is set to UTC (GMT) UTC=no 

Ubuntu 15.04及以上系统(例如Ubuntu 16.04 LTS):

  1. 打开终端并执行以下命令

     timedatectl set-local-rtc 1 

来源: Ubuntu帮助