解決Ubuntu(20.04)和Windows10雙系統時間不同步問題


1. 原因分析

出現這種情況的原因是 Windows 和 Ubuntu它們在默認情況下看待硬件時間(主板上的BOIS顯示的時間)的方式 不一樣。

我們先來了解一下關於時間的概念 :

  • UTC,即Universal Time Coordinated, 協調世界時

  • GMT,即Greenwich Mean Time, 格林尼治平時

  • RTC時間,即Real-time clock,是電腦的硬件時間

Windows 與 Linux 缺省看待系統硬件時間的方式是不一樣的:

  • Linux 時鍾分為系統時鍾(System Clock)和硬件(RTC)時鍾。Linux把硬件時間當作 UTC,系統時間是UTC時間經過換算得來的。比如說北京時間是GMT+8,則系統中顯示時間是硬件時間+8。
  • Windows把系統硬件(RTC)時間當作本地時間(local time),即系統時間跟BIOS中顯示的時間(RTC)是一樣的。

2. 解決方法

2.1 方法1(親測有效)

在Ubuntu系統中,命令行輸入

sudo apt-get install ntpdate					//在Ubuntu下更新本地時間
sudo ntpdate time.windows.com
sudo hwclock --localtime --systohc			//將本地時間更新到硬件上

然后重啟進入Windows,初次重啟可能時間依然不同,但是在Windows調整一遍后,再隨意切換時間就同步了。


2.2 方法2(對於低版本的Ubuntu系統可能有效)

1,2任選其一即可

1,讓Ubuntu不使用UTC時間, 而使用BIOS時間

將 /etc/default/rcS 中的	UTC=yes 改為 no		// 高版本(16.04之后)的Ubuntu系統可能在default文件夾下找不到rcS文件,見方法3

2.讓Windows使用UTC時間,而不使用BIOS時間

開始->運行->CMD,打開命令行程序(Vista則要以管理員方式打開命令行程序方可有權限訪問注冊表),
在命令行中輸入下面命令並回車:

Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

2.3 方法3(方法二的一個補充,親測亦有效)

如果在方法2的1中沒有rcs文件,可以采用一下方式解決:

終端輸入:

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

然后重啟。

對命令的一點解釋:

--adjust-system-clock
           當使用set-local-rtc命令時,若使用了此選項,則表示根據RTC時間來更新系統時鍾,而不是用UTC來更新(UTC需要+8)。
           若未使用此選項,則表示根據系統時鍾來更新RTC時間。

3. 補充及總結

為了更好的理解兩個系統對待時間的不同,作以下補充即總結:

  • Windows將硬件時間(RTC)作為系統顯示的時間。
  • Linux將硬件時間(RTC)作為UTC, 然后將UTC+8作為系統時間。這就導致了二者之間的不同, 時間會差8小時。

我們的解決方案是,要么讓Windows屈就於Linux,要么讓Linux屈就於Windows。我的建議是后者,因為畢竟Windows是主系統。

提供的三種方法本質上都是相同的,都是讓Linux直接以RTC作為系統顯示時間,而不需要UTC+8。

以下兩幅圖片,分別是改變前后,Linux時間的區別,大家可以借助理解。

前
改變前
后
改變后


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM