Linux與Windows中的UTC時間


Linux與Windows中的UTC時間

先介紹幾個術語

UTC 協調世界時,又稱世界標准時間或世界協調時間,簡稱UTC(從英文“Coordinated Universal Time”/法文“Temps Universel Cordonné”而來),是最主要的世界時間標准,其以原子時秒長為基礎,在時刻上盡量接近於格林尼治平時。

GMT 格林威治標准時間(中國大陸翻譯:格林尼治平均時間或格林尼治標准時間,台、港、澳翻譯:格林威治標准時間;英語:Greenwich Mean Time,GMT)是指位於英國倫敦郊區的皇家格林威治天文台的標准時間,因為本初子午線被定義在通過那里的經線。

Localtime 本地時鍾,即本地所在時區的當前時間。

簡單意義上,UTC時間即等同於GMT時間。

操作系統使用兩個時鍾保存時間:硬件時鍾和系統時鍾。

  • 硬件時鍾(即實時時鍾 RTC 或 CMOS 時鍾)僅能保存:年、月、日、時、分、秒這些時間數值,無法保存時間標准(UTC 或 localtime)和是否使用夏令時調節。
  • 系統時鍾(即軟件時間) 與硬件時間分別維護,保存了:時間、時區和夏令時設置。Linux 內核保存為自 UTC 時間 1970 年1月1日經過的秒數。初始系統時鍾是從硬件時間計算得來,計算時會考慮/etc/adjtime的設置。系統啟動之后,系統時鍾與硬件時鍾獨立運行,Linux 通過時鍾中斷計數維護系統時鍾。

硬件時鍾是記錄在BIOS中的時間。
對於Windows系統,默認會將BIOS中的硬件時鍾當作Localtime,系統在關機時,Windows會將時間同步到硬件時間中去,因此BIOS時鍾和系統時鍾都成為Localtime.

對於Linux系統,如Red Hat系統,在安裝時會有一個選項System clock uses UTC, 當勾選此選項時,表示系統將BIOS硬件時鍾當作UTC時間,因此系統時鍾會通過BIOS時間加減所在時區和夏令時計算出。如果不勾選此選項,系統將BIOS硬件時鍾當作Localtime, 系統會直接同步硬件時鍾到系統時鍾而不經過時區的計算。Linux系統在關機時,這里還是舉例Red Hat系統,在關機時會通過/etc/rc.d/init.d/halt這個腳本判斷系統是否使用UTC硬件時間,如果使用UTC時間,這將系統時鍾Localtime轉換為UTC同步至硬件時鍾,如果沒有使用UTC時間,則直接同步系統時鍾到硬件時鍾,系統是否啟用UTC硬件時鍾在/etc/sysconfig/clock中設定。

Linux和Windows系統共存時

如果安裝了Windows操作系統,那么最好將Windos設置為UTC硬件時鍾,方法為修改注冊表。這樣Linux系統也可以使用UTC時鍾,使用UTC時鍾的好處是系統自動根據時區和夏令時來設置系統時鍾。如果Windows要使用Localtime, 那么Linux最好也將UTC關閉使用Localtime. 如果Linux系統和Windows系統使用不一樣的設置(即都使用默認設置),系統在關機時會同步硬件時鍾,最后結果是硬件時鍾被改來改去,不是Windows慢了8個小時,就是Linux快了8個小時。

 


免責聲明!

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



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