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時間的區別,大家可以借助理解,
改變前
改變后
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/458254.html
標籤:Linux
上一篇:解決Ubuntu(20.04)開機、關機、重啟慢,有游標閃爍問題
下一篇:Linux-安裝ifconfig
