Linux与Windows双系统时间同步
Linux与Windows双系统时间同步
Linux Windows 双系统切换时间不一致,一般是相差 8 小时
原因分析
GMT:Greenwich Mean Time,即格林尼治标准时间,也就是世界时。GMT 以地球自转为基础的时间计量系统,但由于地球自转不均匀,导致 GMT 不精确,现在已经不再作为世界标准时间使用。
UTC:Universal Time Coordinated,即协调世界时。UTC 是以原子时秒长为基础,在时刻上尽量接近于 GMT 的一种时间计量系统。为确保 UTC 与 GMT 相差不会超过 0.9 秒,在有需要的情况下会在 UTC 内加上正或负闰秒。UTC 现在作为世界标准时间使用。
RTC:Real-Time Clock,即实时时钟,在计算机领域作为硬件时钟的简称。
Linux 和 Windows 读取硬件时间的方式不同。Windows 把电脑的硬件时钟(RTC)看成是本地时间(RTC = Local Time
),会直接显示硬件时间;而 Linux 则是把电脑的硬件时钟看成 UTC 时间(RTC = UTC
)。
解决办法
思路分为两种:
- 让 Windows 认为硬件时钟是 UTC 时间
- 让 Linux 认为硬件时钟是本地时间
修改 Windows 硬件时钟为 UTC 时间
以管理员身份打开 PowerShell
,输入命令:
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
或者打开注册表编辑器
,定位到
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
新建一个 DWORD
类型,名称为 RealTimeIsUniversal
的键,修改键值为 1
。
修改 Linux 硬件时钟为本地时间
这里大家可以根据自己 Linux 发行版的方法来修改。我这里给出现在大多数发行版由 timedatectl
来管理时间的修改方法。
在终端中,输入以下命令:
$ timedatectl set-local-rtc 1 --adjust-system-clock
现在,系统时间显示正常了。
这两种方法中,推荐第一种方法,修改 Windows 的时间管理。因为在 Linux 系统中修改后,输入 timedatectl
命令后,会出现警告,提示你使用 RTC 时钟会导致一些程序错误;并且 Windows 也在更改时间管理方式为 UTC 时间。