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

我已经以UEFI模式(关闭安全启动)在Windows 10和Ubuntu 16.04中进行了双系统引导。我的BIOS时间是正确的。
当我启动Ubuntu然后再启动Windows 10时,它显示错误的时间。我必须在Windows 10中手动或通过互联网进行更正,当我重新启动到Windows 10时,这就不是问题了。时钟会显示正确的时间。然后当我重新启动到Linux时,时钟是正确的,但再次切换回Windows 10时,时钟又出现混乱。

4Ubuntu设置为UTC时间,而Windows没有。您需要将Windows也设置为UTC时间。请查看http://superuser.com/questions/185773/does-windows-7-support-utc-as-bios-time - Terrance
谢谢Terrance。我曾在Windows论坛上提过这个问题,他们只是让我打转然后没有回答。 - Brij Raj Kishore
还有这个问题也可以看一下:http://askubuntu.com/q/169376/295286 双系统启动经常出现的问题 - Sergiy Kolodyazhnyy
没问题。最好将Ubuntu设置为UTC时间,将Windows也设置为UTC时间。我已经这样做了,没有遇到任何问题。=) - Terrance
我的BIOS时间不正确,我应该怎么办? - Panagiss
1个回答

多重引导系统时间冲突

操作系统将时间存储和检索到位于主板上的硬件时钟中,以便即使在系统没有电源时也能跟踪时间。大多数操作系统(Linux/Unix/Mac)默认将时间存储在硬件时钟上作为UTC,而一些系统(尤其是Microsoft Windows)将时间存储在硬件时钟上作为“本地时间”。这在双启动系统中会导致问题,如果两个系统对硬件时钟的视图不同。
将硬件时钟设置为UTC的优点是,在时区之间移动或夏令时(DST)开始或结束时,您无需更改硬件时钟,因为UTC没有夏令时或时区偏移。
将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 Time服务(如果需要在Windows中使用任何第三方时间同步解决方案):
sc config w32time start= disabled
如果在Powershell中运行上述命令,则必须指定sc.exe:
sc.exe config w32time start= disabled
撤销更改
您可以创建一个包含以下内容的文件,然后双击它以合并原始更改,如上所述:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=-
如果Windows Time服务已被禁用,请使用以下命令重新启用它:
sc config w32time start= demand
解决方案2:使Linux使用“本地”时间
告诉您的Ubuntu系统硬件时钟设置为“本地”时间:
Ubuntu 15.04之前的系统(例如Ubuntu 14.04 LTS):
编辑/etc/default/rcS
添加或更改以下部分:
# Set UTC=yes if your hardware clock is set to UTC (GMT) UTC=no
Ubuntu 15.04及以上的系统(例如Ubuntu 16.04 LTS):
打开终端并执行以下命令:
timedatectl set-local-rtc 1

来源:Ubuntu 帮助


嗨,你也试过在Windows 10 64位上使用吗?应该使用"qword"而不是"dword"。来源:http://ubuntuhandbook.org/index.php/2016/05/time-differences-ubuntu-1604-windows-10/ - Matěj Kříž
我在一年前在Windows 10上试过了...那时候是有效的...现在就不好说了,但很可能还是有效的。 - Ceda EI
禁用Windows时间服务是否安全/可行?它的作用是什么?如果禁用了与互联网同步时间的功能,那么禁用它将会有问题。 - user25
我有一个双系统安装,分别为Windows 10和Ubuntu 20.04。在进行任何操作之前,Ubuntu会正确显示时间,而Windows则显示错误的时间。尝试让Windows使用UTC并关闭Windows时间服务并没有起作用,这导致Windows显示了正确的时间,但Ubuntu却显示了错误的时间。但是,将Ubuntu设置为使用本地时间后,两者均显示了相同的正确时间。 - Ameer Taweel
我有同样的问题,但我注意到 BIOS 的时间与 Windows 10 显示的时间不一致(仅在之前启动过 Linux 后才出现)。我尝试更改 BIOS 时间,但每次返回时都是错误的时间... - Panagiss
这会立即改变时间吗?在使用Windows 10后,我的时间差了一个小时,但是timedatectl set-local-rtc 1或timedatectl set-local-rtc 0没有任何区别。 - Kvothe