国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C# 時(shí)間與時(shí)間戳互轉(zhuǎn)的方法(13位)

2019-10-29 19:58:23
字體:
供稿:網(wǎng)友

目前經(jīng)常出現(xiàn)的時(shí)間有三個(gè):

  • 本地時(shí)間(locale time)
  • 格林威治時(shí)間(Greenwich Mean Time GMT)
  • 時(shí)間協(xié)調(diào)時(shí)間 (Universal Time Coordinated UTC)

時(shí)間標(biāo)準(zhǔn):

(1)世界時(shí) 
世界時(shí)是最早的時(shí)間標(biāo)準(zhǔn)。在1884年,國際上將1s確定為全年內(nèi)每日平均長度的1/8.64×104。以此標(biāo)準(zhǔn)形成的時(shí)間系統(tǒng),稱為世界時(shí)(UT1)。 1972年國際上開始使用國際原子時(shí)標(biāo),從那以后,經(jīng)過格林威治老天文臺(tái)本初子午線的時(shí)間便被稱為世界時(shí)(UT2),或稱格林威治時(shí)間(GMT),UT2是對(duì)地球轉(zhuǎn)速周期性差異進(jìn)行校正后的世界時(shí)。 

(2)原子時(shí) 
1967年,人們利用銫原子振蕩周期極為規(guī)律的特性,研制出了高精度的原子時(shí)鐘,將銫原子能級(jí)躍遷輻射9192631770周所經(jīng)歷的時(shí)間定為1s。現(xiàn)在用的時(shí)間就是1971年10月定義的國際原子時(shí),是通過世界上大約200多臺(tái)原子 鐘進(jìn)行對(duì)比后,再由國際度量衡局時(shí)間所進(jìn)行數(shù)據(jù)處理,得出的統(tǒng)一的原子時(shí),簡(jiǎn)稱TAI。 

(3)世界協(xié)調(diào)時(shí) 
世界協(xié)調(diào)時(shí)是以地球自轉(zhuǎn)為基礎(chǔ)的時(shí)間標(biāo)準(zhǔn)。由于地球自轉(zhuǎn)速度并不均勻,并非每天都是精確的86400原子s,因而導(dǎo)致了自轉(zhuǎn)時(shí)間與世界時(shí)之間存在18個(gè)月有1s的誤差。為糾正這種誤差,國際地球自轉(zhuǎn)研究所根據(jù)地球自轉(zhuǎn)的實(shí)際情況對(duì)格林威治時(shí)間進(jìn)行增減閏s的調(diào)整,與國際度量衡局時(shí)間所聯(lián)合向全世界發(fā)布標(biāo)準(zhǔn)時(shí)間,這就是所謂的世界協(xié)調(diào)時(shí)(UTC:CoordinatdeUniversalTime)。UTC的表示方式為:年(y)、月(m)、日(d)、時(shí)(h)、分(min)、秒(s),均用數(shù)字表示。

GPS 系統(tǒng)中有兩種時(shí)間區(qū)分,一為UTC,另一為LT(地方時(shí))兩者的區(qū)別為時(shí)區(qū)不同,UTC就是0時(shí)區(qū)的時(shí)間,地方時(shí)為本地時(shí)間,如北京為早上八點(diǎn)(東八區(qū)),UTC時(shí)間就為零點(diǎn),時(shí)間比北京時(shí)晚八小時(shí),以此計(jì)算即可

通過上面的了解,我們可以認(rèn)為格林威治時(shí)間就是時(shí)間協(xié)調(diào)時(shí)間(GMT=UTC),格林威治時(shí)間和UTC時(shí)間均用秒數(shù)來計(jì)算的。

/// <summary>    /// 獲取時(shí)間戳    /// </summary>    /// <returns></returns>    public static string GetTimeStamp(System.DateTime time)    {      long ts = ConvertDateTimeToInt(time);      return ts.ToString();    }    /// <summary>     /// 將c# DateTime時(shí)間格式轉(zhuǎn)換為Unix時(shí)間戳格式     /// </summary>     /// <param name="time">時(shí)間</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調(diào)整為13位         return t;    }    /// <summary>        /// 時(shí)間戳轉(zhuǎn)為C#格式時(shí)間        /// </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>  /// 時(shí)間戳  /// </summary>  public class TimeHelp  {    /// <summary>    /// 獲取時(shí)間戳    /// </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時(shí)間格式轉(zhuǎn)換為Unix時(shí)間戳格式     /// </summary>     /// <param name="time">時(shí)間</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調(diào)整為13位         return t;    }    /// <summary>        /// 時(shí)間戳轉(zhuǎn)為C#格式時(shí)間        /// </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>    /// 時(shí)間戳轉(zhuǎn)為C#格式時(shí)間10位    /// </summary>    /// <param name="timeStamp">Unix時(shí)間戳格式</param>    /// <returns>C#格式時(shí)間</returns>    public static DateTime GetDateTimeFrom1970Ticks(long curSeconds)    {      DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));      return dtStart.AddSeconds(curSeconds);    }    /// <summary>    /// 驗(yàn)證時(shí)間戳    /// </summary>    /// <param name="time"></param>    /// <param name="interval">差值(分鐘)</param>    /// <returns></returns>    public static bool IsTime(long time, double interval)    {      DateTime dt = GetDateTimeFrom1970Ticks(time);      //取現(xiàn)在時(shí)間      DateTime dt1 = DateTime.Now.AddMinutes(interval);      DateTime dt2 = DateTime.Now.AddMinutes(interval * -1);      if (dt > dt2 && dt < dt1)      {        return true;      }      else {        return false;      }    }    /// <summary>    /// 判斷時(shí)間戳是否正確(驗(yàn)證前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;      }    }  }

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到c#教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 格尔木市| 惠州市| 长白| 同心县| 集贤县| 吴江市| 丘北县| 内江市| 山东省| 黎平县| 浮梁县| 邻水| 通道| 若羌县| 岳池县| 昆明市| 汝城县| 平江县| 武强县| 藁城市| 永仁县| 宜州市| 读书| 通城县| 千阳县| 营口市| 平南县| 漳浦县| 民乐县| 金门县| 龙泉市| 甘南县| 淮滨县| 克拉玛依市| 盐池县| 贵德县| 邹城市| 内乡县| 渝中区| 恭城| 凤台县|