引言

或许你会遇到过一个很烦人的问题:

在使用Windows和Linux双系统时,

Linux下设置时区正常时,Win下时间会错位;
Win下同步时间时,Linux下时间会错位;

王 昌 龄 马 !

问题根源:默认情况下,Linux系统使用协调世界时(UTC),而Windows则使用实时时钟(RTC)中存储的本地时间。安装Linux并同步时间后Linux会将硬件时间同步至UTC时间,这会导致Windows错误地将UTC时间当作本地时间而出现时间显示错误。而Linux系统在设置时区之后会在UTC上加上对应时区的时间偏移量进行显示,因此不会出现时间显示问题。

当然,除了每次开机自己动手去同步时间这种笨方法之外,还是有很有效的解决方法的。

要么,你让Windows用UTC;

要么,你让Linux用RTC。

解决方案

方法1:将Windows的时钟基准切换为UTC(推荐)

笔者当然优先选择这一个方案。

我们按 Win+R 输入 regedit 打开注册表编辑器,

然后导航到以下路径:

1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation 

新建 DWORD(32位) 值,名称设置为 RealTimeIsUniversal ,并将这一项的值修改为 1

重启系统,很快你就能看到你的系统时间正常了。

方法2:将Linux的时钟基准切换为RTC

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

为什么笔者更推荐设置Windows时钟基准为UTC:

Linux的大多数程序和服务是遵循POSIX标准设计的
如果你将Linux的时钟基准切换为RTC,那么:

  • 一些程序和服务会在日志中记录错误的时间
  • 个人脚本、cron任务可能会出现延迟/提前执行的问题