Arch Linux中禁用UTC解决双系统时间问题

时间:2024-01-29 16:35:05

原因

Windows双系统时间不统一在于时间表示有两个标准:localtime 和 UTC(Coordinated Universal Time) 。UTC 是与时区无关的全球时间标准。尽管概念上有差别,UTC 和 GMT (格林威治时间) 是一样的。localtime 标准则依赖于当前时区。

时间标准由操作系统设定,Windows 默认使用 localtime,Mac OS 默认使用 UTC 而 UNIX 系列的操作系统两者都有。使用 Linux 时,最好将硬件时钟设置为 UTC 标准,并在所有操作系统中使用。这样 Linux 系统就可以自动调整夏令时设置,而如果使用 localtime 标准那么系统时间不会根据夏令时自动调整。

方法

通过如下命令可以检查当前设置,systemd 默认硬件时钟为协调世界时(UTC)

$ timedatectl status | grep local

硬件时间可以用 hwclock 命令设置,将硬件时间设置为 localtime(解决双系统时间问题):

# timedatectl set-local-rtc true

硬件时间设置成 UTC(恢复默认设置):

# timedatectl set-local-rtc false

上述命令会自动生成/etc/adjtime,无需单独设置。

Note: 如果不存在 /etc/adjtime,systemd 会假定硬件时间按 UTC 设置。

参考资料:https://wiki.archlinux.org/index.php/Time