
我的系統時鐘一直遇到這個奇怪的問題。有時,當我啟動 Windows 10 時,我的時鐘顯示的時間比目前時間早 5 小時。因此,如果我住的地方(東部時區)是中午,時鐘就會顯示下午 5 點。它會根據夏令時進行調整,並提前 5 小時。
我檢查了我的時區設置,它已設置為正確的時區。我將互聯網時間設定為與 同步time.nist.gov
,並且手動同步時間時,它正確設定了時鐘,儘管這樣做時會出現以下錯誤訊息:
“Windows 與 time.nist.gov 同步時發生錯誤。由於逾時期限已過,此操作返回。”
這個問題是在擦除我的硬碟並從頭開始重新安裝 Windows 10 後立即開始的,因此它不是由我此後安裝的任何內容引起的。它僅在 Windows 啟動時發生,但並非每次都會發生。我目前以雙啟動配置安裝了 Ubuntu 16.04(問題在安裝 Ubuntu 之前就開始了),我還沒有看到 Ubuntu 時脈有任何類似的問題。
我在網路上瀏覽過類似的與時間相關的問題,但似乎沒有一個與我的相符。這個問題與我自己的非常相似,但問題是由硬體時鐘關閉引起的,而我電腦上 BIOS 中顯示的時鐘設定為正確的時間。
令我感到奇怪的是,時間是確切地即使調整夏令時,也能休息五小時,一分鐘也不會多。在我看來,Windows 偶爾會與錯誤的時區同步,但我不知道如何驗證或修正它。
更新:事實證明,從 Ubuntu 切換到 Windows 每次都會觸發 5 小時偏移,因此確實是 Ubuntu/Windows 分別將硬體時鐘設定為通用/本地的問題。
答案1
我高度懷疑 Ubuntu 和 Windows 在 hwclock 是本機時間還是 UTC 方面存在分歧。衝突通常是因為 Linux 使用 UTC 中設定的 hwclock,而 Windows 使用本機時區設定的 hwclock。
如果您希望 hwclock 顯示您所在時區的時間,那麼您需要將 linux 變更為非 UTC,這表示讓 linux 使用本機時間。如果您同意 hwclock (BIOS) 採用 UTC,則將 Windows 變更為 UTC。
從這裡:
讓 Windows 使用 UTC
筆記:此方法最初在 Windows Vista 和 Server 2008 上不受支持,但在 Vista SP2、Windows 7、Server 2008 R2 和 Windows 8/8.1 中又恢復了。
使 MS Windows 根據硬體時鐘計算時間為 UTC。
建立一個
WindowsTimeFixUTC.reg
包含以下內容的文件,然後雙擊該文件將內容與註冊表合併:Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=dword:00000001
筆記:無論關機時上述登錄設定如何,Windows 時間服務仍會將本機時間寫入 RTC,因此使用此命令停用 Windows 時間服務很方便(如果在 Windows 中仍需要時間同步,請使用任何第三方時間同步解決方案):
sc config w32time start= disabled
扭轉變化。
您可以建立一個包含以下內容的文件,然後雙擊它以合併原始更改,如上所述:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=-
如果 Windows 時間服務已停用,請使用下列命令再次啟用它:
sc config w32time start= demand
讓 Linux 使用「本地」時間
若要告訴您的 Ubuntu 系統硬體時鐘設定為「本地」時間:
Ubuntu 15.04 之前的系統(例如 Ubuntu 14.04 LTS):
編輯 /etc/default/rcS 並新增或更改以下部分
#Set UTC=yes if your hardware clock is set to UTC (GMT) UTC=no
Ubuntu 15.04 系統以上(例如 Ubuntu 16.04 LTS):開啟終端機並執行下列命令:
timedatectl set-local-rtc 1