a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

C# 時間與時間戳互轉的方法(13位)

2019-10-29 19:58:23
字體:
來源:轉載
供稿:網友

目前經常出現的時間有三個:

  • 本地時間(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;      }    }  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美日韩二区三区 | 久久首页 | 精品中文久久 | 日韩中文字幕视频在线观看 | 午夜国产精品成人 | 久久久久亚洲 | 欧美成人高清 | 一级免费黄视频 | 欧美同性大尺度腐剧 | 久久久久久亚洲av毛片大全 | 日本久久久久久 | 国产精品日韩欧美一区二区三区 | 一级黄色录像视频 | 在线免费视频一区 | 免费高潮视频95在线观看网站 | 干狠狠| 麻豆freexxxx性91精品 | 超碰av在线 | 亚洲日本三级 | 日韩一区二区精品视频 | 中文字幕 国产精品 | 久久久久久久一区 | 欧美日韩在线精品 | 亚洲精品www久久久久久广东 | 红色av社区 | 在线免费观看av片 | 国产第一区二区 | 久久国产婷婷国产香蕉 | 欧美性v | 亚洲欧美日韩国产一区 | 99精品一区二区三区 | 一级片免费在线观看 | 91精品国产91久久久久久蜜臀 | 一区| 日韩视频一区 | 激情欧美一区二区三区中文字幕 | 午夜免费| 三级成人在线 | 久久精品欧美 | 色婷婷综合久久久久中文一区二区 | 久久黄色 |