如何解决 Windows 和 Manjaro 双系统时间差8小时的问题


之前编辑《Manjaro Linux 17.0.2 KDE环境安装、配置记录》的时候漏掉了这个时间的设置记录,今天补上。

症状

主要症状是安装 Windows 和 Linux 系统后 Windows 的时间会比慢8个小时。
当我们将 Windows 时间调整正确之后,Linux 这边如果未联网则时间会快8小时,而联网时我们通常看不到 Linux 时间快,但是回到 Windows 后时间又慢了。 orz

原因

电脑系统中有两个时间:

  • 硬件时间:保存在主板中,信息比较少没时区、夏令时的概念
  • 系统时间:又系统维护,独立于硬件时间,拥有时区、夏令时等信息

系统时间又因为系统的不同使用了两种时间管理办法:

  • localtime:本地时间,目前只有 Windows 在使用。
  • UTC:是一种世界标准时间,Linux 这类类 UNIX 多数会使用,UTC 加减时区之后才是本地时间。

然后问题就来了
Windows 认为硬件时间就是本地时间,所以会直接把主板中的时间拿来当做当前的时间。设置或同步时间后也会把“正确”的时间写入主板。

而 Linux 认为硬件时间是 UTC 标准时间,Linux 时间同步后会把“正确”的时间 -8 之后作为标准 UTC 标准时间写入主板。

而貌似 Linux 启动时就会链接网络同步时间,所以硬件时间很迅速的就被替换为了 UTC 。但是 Windows 比较懒,虽然我们都开启了自动同步时间,但是往往不是很及时,所以错把为 +8 的 UTC 时间当做了正确的显示了出来。

原因说完了,我们接着说怎办

解决办法

我这边是 Manjaro Linux 以它为例来说修复方法。大致上有两种思路,一种是让 Windows 使用 UTC 时间;另一种则是让 Linux 使用 localtime

让 Windows 使用 UTC

这需要修改注册表,而且不能开启时间同步,以免我们的设置被重置。由于我的 Windows 是主力系统,因此没有尝试下面的方法,有效性有待验证

# 以管理员身份使用运行
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

# 以上方法无效或64位系统:
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_QWORD /f

让 Linux 使用本地时间

委屈以下 Linux 吧,Manjaro 或 Arch 可以在终端中输入:

sudo timedatectl set-local-rtc true

本文部分参考内容:
Arch Linux wiki —— Time :
https://wiki.archlinux.org/index.php/Time_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com