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

症状

主要症状是安装 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

让 Linux 使用本地时间

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

sudo timedatectl set-local-rtc true

让 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

本文部分参考内容:
Arch Linux wiki —— Time

  • 2
    点赞
  • 4
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值