【轉】Windows與Linux(Ubuntu)雙系統時間不一致的解決方案

來源:互聯網
上載者:User

標籤:style   io   color   os   使用   sp   for   strong   on   

  當在嵌入式Linux裡面備份檔案時候,在備份的時候,PC(win7)和開發板的時間都是9:30,但是在開發板發現檔案建立時間是9:30,然後u盤插在PC(win7)上,發現檔案建立時間是1:30,為什麼相差8個小時?

  世界協調時間(Universal Time Coordinated,UTC),GPS系統中有兩種時間區分,一為UTC,另一為LT(地方時)。兩者的區別為時區不同,UTC就是0時區的時間,地方時為本地時間,如北京為早上八點(東八區),UTC時間就為零點,時間比北京時晚八小時,以此計算即可.

  UTC相當於本初子午線(即經度0度)上的平均太陽時,過去曾用格林威治平均時(GMT)來表示.北京時間比UTC時間早8小時,以1999年1月1日0000UTC為例,UTC時間是零點,北京時間為1999年1月1日早上8點整。 

  GMT(Greenwich Mean Time)是格林尼治平時:由於地球軌道並非圓形,其運行速度又隨著地球與太陽的距離改變而出現變化,因此視太陽時欠缺均勻性。視太陽日的長度同時亦受到地球自轉軸相對軌道面的傾斜度所影響。為著要糾正上述的不均勻性,天文學家計算地球非圓形軌跡與極軸傾斜對視太陽時的效應。平太陽時就是指經修訂後的視太陽時。在格林尼治子午線上的平太陽時稱為世界時(UT0),又叫格林尼治平時(GMT)。由於兩個系統設定時間時以主板CMOS內的時間為依據,但卻有不同的時間計算標準。所以導致了系統時間的糾紛問題。

  Linux和蘋果作業系統以當前主板CMOS內時間做為格林威治標準時間,再根據系統設定的時區來最終確定當前系統時間(如時區設定為GMT+08:00北京時間時以及當前CMOS時間為03:00,那麼系統會將兩個時間相加得出顯示在案頭的當前系統時間為11:00)。

  Windows 作業系統卻直接把CMOS時間認定為當前顯示時間,不根據時區轉換。這樣每調整一次系統時區,系統會根據調整的時區來計算目前時間,確定後,也就同時修改了CMOS內的時間(即每調整一次時區,設定儲存後,CMOS時間也將被作業系統改變一次,注意不同作業系統調整時間後,也會同時改變CMOS時間,這一點是共通的)。

  這裡我們且不論兩種時間計算標準的好差,而僅讓Windows認定CMOS時間為格林威治標準時間來消除作業系統之間認定時間的差異,從而解決Windows作業系統與不同作業系統並存時出現的時間矛盾。

  也就是說,UTC即Universal Time Coordinated,國際標準時間GMT即Greenwich Mean Time,格林尼治平時在這裡,你可以把UTC認為是GMT+0。Windows(XP和VISTA)和(Linux/Unix/Mac)預設看待系統硬體時間的方式是不一樣的:

  * Windows把系統硬體時間當作本地時間(local time),即作業系統中顯示的時間跟BIOS中顯示的時間是一樣的。

  * Linux/Unix/Mac把硬體時間當作UTC,作業系統中顯示的時間是硬體時間經過換算得來的,比如說北京時間是GMT+8,則系統中顯示時間是硬體時間+8。

  這樣,當PC中同時有多系統共存時,就出現了問題。假如你的Ubuntu和WindowsXP中設定的時區都為北京時間東八區,而你在Ubuntu中把當前系統時間更改為9:00AM。則此時硬體中儲存的實際是UTC時間1:00AM。這時你重啟進入Windows後,你會發現windows系統中顯示的時間是1:AM,比Ubuntu中慢了八個小時。同理,你在Windows中更改或用網路同步了系統時間後,再到Ubuntu中去看,系統就會快了8小時。在實行夏令時的地區,情況可能會更複雜些。原因知道了,那怎麼來解決這種衝突呢。一種就是讓Windows把硬體時間當作UTC,與Linux/Unix/Mac保持一致。另一種就是讓linux/Unix/Mac把系統時間當作本地時間,與Windows保持一致。

  那麼在Windows下的修改方法如下:
  即在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\中添加一項資料類型為REG_DWORD,名稱為RealTimeIsUniversal,值設為1。
  也可用以下命令列:

  @echo off
  color 0a
  Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
  echo.
  echo 已讓Windows識別存貯在主板CMOS內的時間為格林威治標準時間(GMT),即系統根據CMOS時間和設定的時區來確定當前系統的時間。
  echo.
  pause

  而在Ubuntu下的修改方法如下:
  Ubuntu中不使用UTC時間,而啟用本地時間,需要修改 /etc/default/rcS ,修改動作如下:
  在Ubuntu中,開啟終端:
  sudo gedit /etc/default/rcS          //這裡是設定時間用的 ("UTC=").
  將: UTC=yes   改為:  UTC=no   儲存即可解決問題

【轉】Windows與Linux(Ubuntu)雙系統時間不一致的解決方案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.