Linux/Windows雙系統(tǒng)時間相差8小時問題解決方案
問題描述
在雙系統(tǒng)(Arch Linux + Windows)環(huán)境下,從 Linux 重啟進(jìn)入 Windows 后,Windows 系統(tǒng)時間會比實際時間慢 8 小時。反之亦然。
根本原因
兩個操作系統(tǒng)對硬件時鐘(RTC,Real Time Clock)的時間標(biāo)準(zhǔn)處理方式不同:
| 操作系統(tǒng) | 默認(rèn)硬件時鐘標(biāo)準(zhǔn) |
|---|---|
| Windows | 本地時間(localtime) |
| Linux | UTC(協(xié)調(diào)世界時) |
當(dāng)你處于東八區(qū)(UTC+8)時:
- Linux 將硬件時鐘存為 UTC 時間,啟動時加上 8 小時偏移顯示為本地時間。
- Windows 直接讀取硬件時鐘作為本地時間,不再加偏移。
因此,如果 Linux 將硬件時鐘寫為 UTC 時間(比如 12:00),Windows 啟動后直接當(dāng)作本地時間讀取,顯示為 12:00,而實際本地時間應(yīng)該是 20:00,差了正好 8 小時。
解決方案
方案一:讓 Windows 使用 UTC(推薦)
修改 Windows 注冊表,讓 Windows 也把硬件時鐘視為 UTC。
方法 A:命令行(推薦)
以管理員身份打開 PowerShell 或命令提示符,執(zhí)行:
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
方法 B:注冊表文件
創(chuàng)建一個文本文件,命名為 utc-time.reg,內(nèi)容如下:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=dword:00000001
雙擊該文件導(dǎo)入注冊表。
方法 C:手動操作注冊表編輯器
- 按
Win + R,輸入regedit,回車。 - 導(dǎo)航到路徑:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation - 在右側(cè)空白區(qū)域右鍵 → 新建 → DWORD (32位) 值。
- 命名為
RealTimeIsUniversal。 - 雙擊該值,將數(shù)據(jù)設(shè)為
1(十六進(jìn)制)。 - 重啟 Windows。
注意
- 重啟后可能需要重新同步一次時間(Windows 設(shè)置 → 時間和語言 → 日期和時間 → 立即同步)。
- 建議在 Windows 中關(guān)閉自動時間同步,避免與 Linux 端的 NTP 服務(wù)沖突。路徑:設(shè)置 → 時間和語言 → 日期和時間 → 關(guān)閉"自動設(shè)置時間"。
- 如果 Windows 要求因 DST(夏令時)更新時鐘,可以允許,它只會修正顯示時間,硬件時鐘仍保持 UTC。
方案二:讓 Arch Linux 使用本地時間
在 Arch Linux 終端中執(zhí)行:
sudo timedatectl set-local-rtc 1
驗證設(shè)置是否生效:
timedatectl | grep local # 輸出:RTC in local TZ: yes
恢復(fù)為 UTC
如果以后想恢復(fù) Linux 使用 UTC:
sudo timedatectl set-local-rtc 0
注意事項
- 此方案在切換時區(qū)或夏令時調(diào)整時可能產(chǎn)生問題。
- systemd 從 v216 開始,當(dāng) RTC 設(shè)為本地時間時,不再自動將系統(tǒng)時間同步回硬件時鐘,以避免干擾 Windows。
- FAT 文件系統(tǒng)的時間戳將被視為 UTC。
推薦做法總結(jié)
| 方案 | 優(yōu)點 | 缺點 |
|---|---|---|
| Windows 使用 UTC(推薦) | 符合國際標(biāo)準(zhǔn),無夏令時問題,多時區(qū)友好 | 需要修改 Windows 注冊表(操作簡單) |
| Linux 使用 localtime | 操作簡單,一行命令 | 夏令時、時區(qū)切換時可能出問題 |
推薦使用方案一,一勞永逸。
相關(guān)命令備忘
Linux 端
# 查看當(dāng)前時間和 RTC 狀態(tài) timedatectl # 查看 RTC 是否使用本地時間 timedatectl | grep local # 設(shè)置硬件時鐘為 UTC sudo timedatectl set-local-rtc 0 # 設(shè)置硬件時鐘為本地時間 sudo timedatectl set-local-rtc 1 # 查看硬件時鐘 sudo hwclock --show # 將系統(tǒng)時間寫入硬件時鐘 sudo hwclock --systohc # 設(shè)置時區(qū)(示例:上海) sudo timedatectl set-timezone Asia/Shanghai # 啟用 NTP 時間同步 sudo timedatectl set-ntp true
Windows 端
# 添加 UTC 注冊表鍵(管理員權(quán)限) reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f # 刪除 UTC 注冊表鍵(恢復(fù)默認(rèn)) reg delete "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /f # 強(qiáng)制同步時間 w32tm /resync
以上就是Linux/Windows雙系統(tǒng)時間相差8小時問題解決方案的詳細(xì)內(nèi)容,更多關(guān)于Linux/Windows時間相差8小時的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Openssl實現(xiàn)雙向認(rèn)證教程(附服務(wù)端客戶端代碼)
這篇文章主要介紹了Openssl實現(xiàn)雙向認(rèn)證教程(附服務(wù)端客戶端代碼),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05
CentOS 7 x64下Apache+MySQL(Mariadb)+PHP56的安裝教程詳解
這篇文章主要介紹了CentOS 7 x64下Apache+MySQL(Mariadb)+PHP56的安裝教程,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-12-12
linux中install命令和cp命令的使用與區(qū)別
相信大家都知道linux中的命令I(lǐng)nstall和cp類似,都可以將文件/目錄拷貝到指定的地點。下面這篇文章就詳細(xì)介紹了linux中install命令和cp命令的介紹與區(qū)別。有需要的朋友們可以參考借鑒,下面來一起看看吧。2017-01-01
CentOS6.5安裝glibc-2.14后locale出現(xiàn)No?such?file?or?directory解
大家好,本篇文章主要講了CentOS6.5安裝glibc-2.14后locale出現(xiàn)No?such?file?or?directory解決辦法,感興趣的同學(xué)趕快來看看吧,希望對你有幫助2021-11-11

