当前位置: 首页 > 科技观察

如何修复Windows-Linux双启动设置中显示的错误时间

时间:2023-03-14 21:51:35 科技观察

如果您双启动Windows和Ubuntu或任何其他Linux发行版,您可能会注意到两个操作系统之间的时间差异。当您使用Linux时,它会显示正确的时间。但是当您进入Windows时,它会显示错误的时间。有时,情况恰恰相反,Linux显示错误的时间,而Windows显示正确的时间。特别奇怪,因为您已连接到互联网并将日期和时间设置为自动使用。不用担心!您不是唯一遇到此类问题的人。您可以通过在Linux终端上使用以下命令来解决此问题:timedatectlset-local-rtc1同样,不要担心。我将解释为什么您会在双引导设置中遇到时间差异。我将向您展示上述命令如何修复Windows双启动后的错误时间问题。为什么Windows和Linux双启动时显示的时间不同?计算机有两个主要时钟:系统时钟和硬件时钟。硬件时钟也称为RTC(实时时钟)或CMOS/BIOS时钟。这个时钟在操作系统之外,在计算机的主板上。即使在您的系统关闭后,它也会继续运行。系统时钟是您在操作系统中看到的。当计算机开机时,硬件时钟被读取并用于设置系统时钟。之后,系统时钟用于跟踪时间。如果您的操作系统对系统时钟做了任何更改,例如更改时区等,它会尝试将此信息同步到硬件时钟。默认情况下,Linux认为存储在硬件时钟中的时间是UTC,而不是本地时间。另一方面,Windows将存储在硬件时钟上的时间视为本地时间。这就是问题的开始。让我用一个例子来解释。你看我在加尔各答UTC+5:30时区。安装后,当我将Ubuntu中的时区设置为加尔各答时区时,Ubuntu将此时间信息同步到硬件时钟,但偏移量为5:30,因为对于Linux,它必须是UTC。假设加尔各答时区的当前时间是15:00,即UTC时间是09:30。现在,当我关闭系统并启动进入Windows时,硬件时钟具有UTC时间(在本例中为09:30)。但是Windows认为硬件时钟已经存储了本地时间。因此,它更改系统时钟(应显示15:00)并使用UTC时间(09:30)作为本地时间。因此,Windows将时间显示为09:30,比实际时间早5:30(在我们的示例中为15:00)。另外,如果我通过自动时区和时间按钮在Windows中设置正确的时间,您知道会发生什么吗?它现在将在系统上显示正确的时间(15:00),并将此信息(注意图片中的“同步您的时钟”选项)同步到硬件时钟。如果您启动进入Linux,它会从硬件时钟读取时间,而硬件时钟是本地时间(15:00),但由于Linux认为现在是UTC时间,因此它会在系统时钟上添加5:30的偏移量。现在Linux显示20:30,比实际时间晚了5:30。现在您了解了双启动时差问题的根本原因,是时候看看如何解决它了。修复Windows在Linux双启动设置中显示错误的时间有两种方法可以解决此问题:让Windows使用硬件时钟作为UTC时间让Linux使用硬件时钟作为本地时间推荐第二种方法。Ubuntu和大多数其他Linux发行版现在使用systemd,因此您可以使用timedatectl命令更改设置。您要做的就是告诉您的Linux系统使用硬件时钟(RTC)作为本地时间。您可以使用set-local-rtc(为RTC设置本地时间)选项执行此操作:timedatectlset-local-rtc1如下所示,RTC现在使用本地时间。现在,如果您启动Windows,它会将硬件时钟视为本地时间,这实际上是正确的。当您启动进入Linux时,您的Linux系统知道硬件时钟使用的是本地时间,而不是UTC。因此,它不会尝试添加这个时间偏移量。这解决了双启动Linux和Windows时的时差问题。您会看到有关RTC未使用本地时间的警告。对于桌面设置,它应该不会造成任何问题。至少,我想不出有什么不妥。