您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關怎么在C#中將時間與時間戳進行轉換,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
目前經常出現的時間有三個:
本地時間(locale time)
格林威治時間(Greenwich Mean Time GMT)
時間協調時間 (Universal Time Coordinated UTC)
時間標準:
(1)世界時
世界時是最早的時間標準。在1884年,國際上將1s確定為全年內每日平均長度的1/8.64×104。以此標準形成的時間系統,稱為世界時(UT1)。 1972年國際上開始使用國際原子時標,從那以后,經過格林威治老天文臺本初子午線的時間便被稱為世界時(UT2),或稱格林威治時間(GMT),UT2是對地球轉速周期性差異進行校正后的世界時。
(2)原子時
1967年,人們利用銫原子振蕩周期極為規律的特性,研制出了高精度的原子時鐘,將銫原子能級躍遷輻射9192631770周所經歷的時間定為1s。現在用的時間就是1971年10月定義的國際原子時,是通過世界上大約200多臺原子 鐘進行對比后,再由國際度量衡局時間所進行數據處理,得出的統一的原子時,簡稱TAI。
(3)世界協調時
世界協調時是以地球自轉為基礎的時間標準。由于地球自轉速度并不均勻,并非每天都是精確的86400原子s,因而導致了自轉時間與世界時之間存在18個月有1s的誤差。為糾正這種誤差,國際地球自轉研究所根據地球自轉的實際情況對格林威治時間進行增減閏s的調整,與國際度量衡局時間所聯合向全世界發布標準時間,這就是所謂的世界協調時(UTC:CoordinatdeUniversalTime)。UTC的表示方式為:年(y)、月(m)、日(d)、時(h)、分(min)、秒(s),均用數字表示。
GPS 系統中有兩種時間區分,一為UTC,另一為LT(地方時)兩者的區別為時區不同,UTC就是0時區的時間,地方時為本地時間,如北京為早上八點(東八區),UTC時間就為零點,時間比北京時晚八小時,以此計算即可
通過上面的了解,我們可以認為格林威治時間就是時間協調時間(GMT=UTC),格林威治時間和UTC時間均用秒數來計算的。
/// <summary> /// 獲取時間戳 /// </summary> /// <returns></returns> public static string GetTimeStamp(System.DateTime time) { long ts = ConvertDateTimeToInt(time); return ts.ToString(); } /// <summary> /// 將c# DateTime時間格式轉換為Unix時間戳格式 /// </summary> /// <param name="time">時間</param> /// <returns>long</returns> public static long ConvertDateTimeToInt(System.DateTime time) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0)); long t = (time.Ticks - startTime.Ticks) / 10000; //除10000調整為13位 return t; } /// <summary> /// 時間戳轉為C#格式時間 /// </summary> /// <param name=”timeStamp”></param> /// <returns></returns> private DateTime ConvertStringToDateTime(string timeStamp) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(timeStamp + "0000"); TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow); }
/// <summary> /// 時間戳 /// </summary> public class TimeHelp { /// <summary> /// 獲取時間戳 /// </summary> /// <returns></returns> public static string GetTimeStamp(System.DateTime time,int length=13) { long ts = ConvertDateTimeToInt(time); return ts.ToString().Substring(0,length); } /// <summary> /// 將c# DateTime時間格式轉換為Unix時間戳格式 /// </summary> /// <param name="time">時間</param> /// <returns>long</returns> public static long ConvertDateTimeToInt(System.DateTime time) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0)); long t = (time.Ticks - startTime.Ticks) / 10000; //除10000調整為13位 return t; } /// <summary> /// 時間戳轉為C#格式時間 /// </summary> /// <param name=”timeStamp”></param> /// <returns></returns> public static DateTime ConvertStringToDateTime(string timeStamp) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(timeStamp + "0000"); TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow); } /// <summary> /// 時間戳轉為C#格式時間10位 /// </summary> /// <param name="timeStamp">Unix時間戳格式</param> /// <returns>C#格式時間</returns> public static DateTime GetDateTimeFrom1970Ticks(long curSeconds) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); return dtStart.AddSeconds(curSeconds); } /// <summary> /// 驗證時間戳 /// </summary> /// <param name="time"></param> /// <param name="interval">差值(分鐘)</param> /// <returns></returns> public static bool IsTime(long time, double interval) { DateTime dt = GetDateTimeFrom1970Ticks(time); //取現在時間 DateTime dt1 = DateTime.Now.AddMinutes(interval); DateTime dt2 = DateTime.Now.AddMinutes(interval * -1); if (dt > dt2 && dt < dt1) { return true; } else { return false; } } /// <summary> /// 判斷時間戳是否正確(驗證前8位) /// </summary> /// <param name="time"></param> /// <returns></returns> public static bool IsTime(string time) { string str = GetTimeStamp(DateTime.Now,8); if (str.Equals(time)) { return true; } else { return false; } } }
C#是一個簡單、通用、面向對象的編程語言,它由微軟Microsoft開發,繼承了C和C++強大功能,并且去掉了一些它們的復雜特性,C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優雅的語法風格、創新的語言特性和便捷的面向組件編程從而成為.NET開發的首選語言,但它不適用于編寫時間急迫或性能非常高的代碼,因為C#缺乏性能極高的應用程序所需要的關鍵功能。
上述就是小編為大家分享的怎么在C#中將時間與時間戳進行轉換了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。