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

首頁 > 編程 > C# > 正文

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

2020-01-24 00:14:04
字體:
來源:轉載
供稿:網友

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日土县| 谢通门县| 湖北省| 策勒县| 秦皇岛市| 永嘉县| 东乡| 璧山县| 车致| 金坛市| 三明市| 揭西县| 峡江县| 高唐县| 临高县| 高安市| 图木舒克市| 黎川县| 金昌市| 沭阳县| 门头沟区| 大新县| 慈利县| 措勤县| 玉溪市| 洪江市| 金秀| 巴林右旗| 九龙坡区| 饶河县| 沽源县| 奈曼旗| 长治市| 专栏| 清镇市| 修武县| 子长县| 黔西县| 平武县| 独山县| 独山县|