1、硬件時間:硬件時鍾是存儲在主板上CMOS里的時間即BIOS時間,關機后該時鍾依然運行,主板的電池為它供電。對應於嵌入式設備有一個RTC模塊。硬件時鍾即RTC時鍾。信息比較少沒時區、夏令時的概念。
2、系統時間:是軟件系統的時鍾。軟件啟動時會去讀取硬件時間,之后則獨立運行。獨立於硬件時間,擁有時區、夏令時等信息。系統時間又因為系統的不同使用了兩種時間管理方法:
2.1、localtime:本地時間,目前只有 Windows 在使用。Windows 認為硬件時間就是本地時間,所以會直接把主板中的時間拿來當做當前的時間。設置或同步時間后也會把“正確”的時間寫入主板,即操作系統中顯示的時間跟BIOS中顯示的時間是一樣的。
2.1、UTC:是一種世界標准時間(倫敦當地時間),Linux、Mac等類 UNIX系統多數會使用,UTC 加減時區之后才是本地時間。而類UNIX系統認為硬件時間是 UTC 標准時間,即把硬件時間當作 UTC,操作系統中顯示的時間是硬件時間經過換算得來的(加減時區),即操作系統中顯示的時間跟BIOS中顯示的時間不一樣相差對應的時區,比如說北京時間是UTC+8,則系統中顯示時間是硬件時間+8。
3、當PC中Windows 和linux 雙系統共存時,就出現了問題。
例如當你的linux設置的時區為北京時間東八區,當前系統時間為9:00AM。則此時硬件中存儲的實際是UTC 時間1:00AM。這時你重啟進入Windows后,你會發現windows系統中顯示的時間是 1:00AM,比linux中慢了八個小時。同理,你在Windows中更改或用網絡同步了系統時間后,再到linux中去看,系統就會快了8小時。 在實行夏令時的地區,情況可能會更復雜些。
4、解決辦法
大致上有兩種思路,一種是讓 Windows 使用 UTC 時間;另一種則是讓 Linux 使用 localtime,具體的操作這里就不寫了。
