Gemini 提供了以下答案:

问题根源

举个例子: 假设你在东八区(北京/台北时间),现在是下午 4 点 (16:00)。

  1. Linux 启动时:它会认为硬件时钟里存的时间是 UTC 时间。为了显示正确的本地时间 16:00,它会把硬件时钟设置为 16:00 - 8小时 = 08:00
  2. 你重启进入 Windows:Windows 看到硬件时钟是 08:00,它认为这就是本地时间,于是直接显示早上 8 点。这就导致了 8 小时的误差。

反之亦然,如果你在 Windows 里把时间校准为 16:00,它会把 16:00 写入硬件时钟。重启进入 Linux 后,Linux 认为 16:00 是 UTC 时间,它会给你显示 16:00 + 8小时 = 凌晨 00:00

修复方法

有两种解决思路,推荐第一种,因为它更简单且风险更低。


方法一:让 Linux 使用本地时间(推荐)

这是最简单、最安全的方法。我们告诉 Linux 去适应 Windows 的规则,让它把硬件时钟也当作本地时间来处理。

你只需要在你的 Linux 系统中打开终端 (Terminal),然后输入下面这行命令并执行:

Bash

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

执行后,你可以用下面的命令来检查设置是否成功:

Bash

timedatectl

你会看到输出信息中有一行 RTC in local TZ: yes。这就表示 Linux 已经切换到使用本地时间来读写硬件时钟了。