(C#)時間戳、DateTime相互轉換

努力努力學習中發表於2020-10-20

 時間戳實際就是當前時間距離1970年1月1日0點0時0分0秒(轉換成北京時間是1970年1月1日8點0時0分0秒)距離你要計算的時間的秒數或者毫秒數

一般來說:我們用的時間戳到秒的話是10位,到毫秒的話是13位

北京時間 2001-09-09 09:46:40是10位起始值,毫秒的話多三位
北京時間 2286-11-21 01:46:40是11位起始值,毫秒的話多三位

        /// <summary>  
        /// 獲取時間戳,為真時獲取10位(秒)時間戳(Unix),為假時獲取13位(毫秒)時間戳
        /// </summary>  
        /// <param name="bflag">.</param>  
        /// <returns></returns>  
        public static long GetTimeStamp(DateTime dt,bool bflag)
        {
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 當地時區
            TimeSpan ts = dt - startTime;
            long ret = 0;
            if (bflag)
                ret = Convert.ToInt64(ts.TotalSeconds);
            else
                ret = Convert.ToInt64(ts.TotalMilliseconds);

            return ret;
        }

        /// <summary>
        /// 將時間戳轉換為DateTime時間,bSecond為true:秒,bSecond為false:毫秒
        /// </summary>
        /// <param name="timestamp"></param>
        /// <param name="bSecond"></param>
        /// <returns></returns>
        public static DateTime TimeStampToDateTime(long timestamp,bool bSecond)
        {
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 當地時區

            if (bSecond)
            {
                return startTime.AddSeconds(timestamp);
            }
            else
                return startTime.AddMilliseconds(timestamp);
        }

 

相關文章