概述

计算机会将当前时间存储在主板上的硬件时钟中。即使计算机处于关闭状态,时钟也会记录时间。默认情况下,Windows假定时间以本地时间存储,而Linux假定时间以UTC时间存储并应用偏移量。这导致您的一个操作系统在双启动情况下显示错误的时间。

要解决此问题,有两种选择:让Linux使用本地时间,或让Windows使用UTC时间。
二者任选其一,不要同时修改!!如果可能,我们建议您使用本地时间。

方案一 让Linux使用本地时间

让Linux以与Windows相同的方式使用本地时间可能是最好的选择。Windows确实有一个注册表设置,强制它将时间存储为UTC,但据说它没有得到很好的支持,并且可能会导致某些第三方应用程序出现问题,这些应用程序总是假设硬件时钟在本地时间。它也与Windows自己的互联网时间同步服务不兼容。

使Linux系统使用本地时间的步骤因Linux发行版到Linux发行版而异。但是,在使用systemd的任何Linux发行版上,您可以使用该timedatectl 命令进行此更改。这将适用于Ubuntu,Fedora,Red Hat,Debian,Mint和其他使用systemd的Linux发行版的现代版本。

要进行此更改,首先在Linux系统上打开终端窗口。执行以下命令,将主板上的实时时钟转换为本地时间。Linux将时间本地时间存储,就像Windows一样。

timedatectl set-local-rtc 1 --adjust-system-clock

要检查当前设置,请运行:

timedatectl

如果您看到RTC in local TZ: yes,则Linux将设置为使用本地时区而不是UTC。该命令警告您,此模式不完全受支持,并且在时区和夏令时之间切换时可能会导致一些问题。但是,此模式可能比Windows中的UTC选项更好。如果您使用Windows双启动,Windows将为您处理夏令时。
如果想要撤消此更改,请运行以下命令:

timedatectl set-local-rtc 0 --adjust-system-clock

方案二 使Windows使用UTC时间

让Windows像Linux一样使用UTC时间可能不是最好的选择。您可以编辑注册表以使Windows使用UTC时间,但这可能会导致更多问题,而不仅仅是让Linux使用本地时间。

如果您确实想这样做,首先要在Windows上禁用Internet时间更新功能。这可确保Windows在尝试从Internet同步当前时间时不会错误地设置时钟。在Windows 10上,转到设置 -> 时间和语言,并禁用自动设置时间。在Windows 7上,右键单击任务栏中的系统时钟,然后选择调整日期/时间。单击Internet时间选项卡,单击更改设置按钮,取消选中与Internet时间服务器同步选项,然后单击确定

通过编辑注册表使Windows使用UTC时间

现在需要将适当的值添加到Windows注册表。这是我们的标准警告:注册表编辑器是一个功能强大的工具,滥用它会导致系统不稳定甚至无法运行。这是一个非常容易的修改,只要你按照说明你就不应该有任何问题。也就是说,如果您以前从未使用过它,请在开始之前考虑阅读有关 如何使用注册表编辑器的内容 。并且在进行更改之前一定要 备份注册表 (和 您的计算机!)。

首先,单击开始,键入regedit,然后按回车键打开注册表编辑器。同意出现的安全提示。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation

在最新版本的Windows 10上,您可以将上述行复制并粘贴到地址框中。但是,这个修改也适用于Windows 7。
右键单击TimeZoneInformation键,然后选择新建>DWORD(32位)值
为新值命名RealTimeIsUniversal。
双击RealTimeIsUniversal 刚刚创建的值,将值数据设置为1,然后单击确定
您现在已经完成,可以关闭注册表编辑器。Windows将以UTC的形式存储时间,就像Linux一样。
如果您想要撤消此更改,请返回到注册表中的此位置,右键单击RealTimeIsUniversal 您添加的值,然后将其从注册表中删除。

以下是一键修改脚本,复制保存为对应名称的文件就可以.

修改为UTC时间

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation]
"RealTimeIsUniversal"=dword:00000001

复制以上内容,新建记事本文件,保存为xxx.reg文件,并双击导入到注册表

还原windows默认设置

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation]
"RealTimeIsUniversal"=-

复制以上内容,新建记事本文件,保存为xxx.reg文件,并双击导入到注册表

上面的修改做了我们上面描述的相同的事情。第一个脚本创建值为1RealTimeIsUniversal条目,而第二个脚本删除RealTimeIsUniversal条目。

本文转载自:https://www.howtogeek.com/323390/how-to-fix-windows-and-linux-showing-different-times-when-dual-booting/