如果您 雙啟動 Windows 和Ubuntu 或任何其他Linux發行版,您可能已經註意到兩個操作系統之間的時差。
當你 使用Linux,它顯示正確的時間。 但是當您啟動時 Windows,它顯示錯誤的時間。 有時情況恰恰相反,Linux顯示錯誤的時間, Windows 有正確的時間。
特別是這很奇怪,因為您已連接到Internet,並且您將日期和時間設置為自動使用。
不用擔心您不是唯一面對此問題的人。 您可以在Linux終端中使用以下命令來修復它:
timedatectl set-local-rtc 1
同樣,不用擔心。 我將詳細說明上述命令如何解決以下錯誤的時間問題: Windows 雙啟動後。 但是在此之前,讓我告訴您為什麼在雙重啟動設置中會遇到時差。
為什麼 Windows 和Linux在雙啟動中顯示不同的時間?
計算機有兩個主要時鐘:系統時鐘和硬件時鐘。
硬件時鐘,也稱為RTC(實時時鐘)或CMOS / BIOS時鐘。 此時鐘在操作系統之外,在計算機的主板上。 即使關閉系統電源,它仍可以繼續運行。
系統時鐘是您在操作系統內部看到的。
打開計算機電源後,將讀取硬件時鐘並用於設置系統時鐘。 之後,系統時鐘用於跟踪時間。 如果您的操作系統對系統時鐘進行了任何更改(例如更改時區等),它將嘗試將此信息同步到硬件時鐘。
默認情況下,Linux假定硬件時鐘中存儲的時間是UTC,而不是本地時間。 另一方面, Windows 認為存儲在硬件時鐘上的時間是本地時間。 那就是麻煩開始的地方。
讓我用例子來解釋。
您看到我所在的時區是UTC + 5:30。 安裝後,當我設置 Ubuntu中的時區 在加爾各答時區,Ubuntu將此時間信息同步到硬件時鐘,但偏移為5:30,因為Linux的硬件時鐘(RTC)必須使用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使用本地時間作為硬件時鐘
在Linux中進行更改比較容易,因此,我建議使用第二種方法。
如今,Ubuntu和大多數其他Linux發行版都使用systemd,因此您可以使用timedatectl命令更改設置。
您要做的是告訴Linux系統使用本地時間作為硬件時鐘(RTC)。 您可以通過 set-local-rtc
(設置RTC的本地時間)選項:
timedatectl set-local-rtc 1
您可以在下圖中看到,RTC現在使用當地時間。

現在,如果您啟動 Windows,它將硬件時鐘作為本地時間,這實際上是正確的時間。 當您啟動Linux時,您的Linux系統知道硬件時鐘使用的是本地時間,而不是UTC。 因此,這次它不會嘗試添加偏移。
這解決了Linux和Linux之間的時差問題。 Windows 在雙啟動中。
您會看到有關不為RTC使用本地時間的警告。 對於桌面安裝程序,它應該不會引起任何問題。 至少我想不到一個。
希望我能為您講清楚。 如果仍有問題,請在下面發表評論。