轉自:https://blog.csdn.net/Allen_lv/article/details/132869729
UTC、RTC、UNIX時間戳、localtime 理解
UTC 時間
UTC是世界協調時間時,UTC 是現在全球通用的時間標準,全球各地都同意將各自的時間進行同步協調。UTC 時間是經過平均太陽時(以格林威治時間GMT為準)、地軸運動修正後的新時標以及以秒為單位的國際原子時所綜合精算而成。 即每一個地方在同一時刻的UTC時間是相同的。可以在UTC 時間 網站上看到當前的UTC時間。
同時為了統一各地的時間, 引入了時區的概念:
從格林威治本初子午線起,經度每向東或者向西間隔15°,就劃分一個時區,在這個區域內,使用相同的時間。實際劃分可能根據國家、省份的邊界來定。
用UTC+或UTC- 來表示各個時區的時間,比如中國的時區時間就是UTC+8。
RTC 時鐘
實時時鐘(Real-time clock,RTC)是指可以像時鐘一樣輸出實際時間的電子裝置,一般會是積體電路,因此也稱為時鐘晶片。可以把他想象成一個儲存器,裡面只儲存了年月日時分秒這些資料,要怎麼理解這些資料就看作業系統的區別了。
大部分作業系統的時間管理包括如下方面:
啟動時根據硬體時鐘設定系統時間
執行時透過 NTP 守護程序聯網校正時間
關機時根據系統時間設定硬體時間。
UNIX 時間
是UNIX或類UNIX系統使用的時間表示方式:從UTC 1970年1月1日0時0分0秒起至現在的總秒數,不考慮閏秒。
localtime
可以把localtime想象成我們看到的正確的時間,就是UTC+時區偏移。localtime 與硬體時間有關,Linux 中,會認為硬體中儲存的時間是 UTC 時間,它想讓你看到localtime,就會在硬體中儲存的時間的基礎上加上時區的偏移。而在windows 中就認為硬體中儲存的時間是UTC+時區偏移了,它會直接進行顯示。這也是我們在電腦上裝了雙系統之後,時間會發生錯亂的原因。
總結
總之,記住一點是很重要的,UTC時間,世界同一時刻任一地方的時間都是一樣的,我們要看到正確的時間,是UTC+時區偏移。下面這個圖也可以幫助理解一下。
研究一下UTC時間獲取,如下
DateTime dt = DateTime.UtcNow;
另:
DateTime.UtcNow.ToString();//輸出的是0時區的事件,
DateTime.Now.ToString();// 輸出的是當前時區的時間,我們中國使用的是東八區的時間,所以差8個小時
以下是互相轉換class位utc
class utc { public static int ConvertDateTimeInt(System.DateTime time) { double intResult = 0; System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); intResult = (time - startTime).TotalSeconds ; return (int)intResult; } public static DateTime ConvertIntDatetime(double utc) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); startTime = startTime.AddSeconds(utc); startTime = startTime.AddHours(8);//轉化為北京時間(北京時間=UTC時間+8小時 ) return startTime; } //呼叫方法 // DateTime utcNow = DateTime.Now.ToUniversalTime(); // double utc= ConvertDateTimeInt(utcNow); // DateTime dtime = ConvertIntDatetime(utc); }
————————————————
版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。
原文連結:https://blog.csdn.net/Allen_lv/article/details/132869729