1. 原因

  • Windows 系统把硬件时间当作本地时间,Windows 系统显示的时间就是硬件时间,和 BIOS 中显示的时间一致。

  • Linux/Unix/Mac 系统把硬件时间当作 UTC 时间,系统显示的时间是通过硬件时间换算而来。

2. 解决

可以通过以下任意一种方案解决。

2.1 更改 Windows 时间设定(推荐)

更改 Windows 对硬件时间的解释方式。以管理员身份打开 CMD,运行以下命令:

1
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

若想更改回去,只需如下设置:

1
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0

2.2 更改 Linux 时间设定

更改 Linux 对硬件时间的解释方式。

1
2
timedatectl set-local-rtc 1 --adjust-system-clock
sudo hwclock -w

若想更改回去,只需如下设置:

1
2
timedatectl set-local-rtc 0 --adjust-system-clock
sudo hwclock -w