timeStamp(時間戳)


 什么是時間戳?

首先要清楚JavaScript與Unix的時間戳的區別:

JavaScript時間戳:是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總毫秒數。

Unix時間戳:是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。

可以看出JavaScript時間戳總毫秒數,Unix時間戳是總秒數。

比如同樣是的 2016/11/03 12:30:00 ,轉換為JavaScript時間戳為 1478147400000;轉換為Unix時間戳為 1478147400。

JavaScript時間戳相互轉換

C# DateTime轉換為JavaScript時間戳

DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));  // 當地時區
DateTime localNow = DateTime.Now;
long timeStamp = (long)((localNow - startTime).Ticks / 10000); // 相差毫秒數

  或者:

DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));  // 當地時區
            DateTime localNow = DateTime.Now;
            long timeStamp = (long)((localNow - startTime).TotalMilliseconds); // 相差毫秒數

  

JavaScript時間戳轉換為C# DateTime

long jsTimeStamp = 1478169023479;
 
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 當地時區
 
DateTime dt = startTime.AddMilliseconds(jsTimeStamp);
 
System.Console.WriteLine(dt.ToString("yyyy/MM/dd HH:mm:ss:ffff"));

  

獲取當前時間戳(取到毫秒得到的時間戳就是13位,只取到秒的話時間戳就是10位)

第一種方法
/// <summary>  
        /// 獲取當前時間戳  
        /// </summary>  
        /// <param name="bflag">為真時獲取10位時間戳,為假時獲取13位時間戳.bool bflag = true</param>  
        /// <returns></returns>  
        public static string GetTimeStamp(bool bflag)
        {
            TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
            string ret = string.Empty;
            if (bflag)
                ret = Convert.ToInt64(ts.TotalSeconds).ToString();
            else
                ret = Convert.ToInt64(ts.TotalMilliseconds).ToString();

            return ret;
        }

  

一般一個項目中就會只用一種,要么10位要么13位,所以也可以直接用下面的代碼

public static long GetTimestamp()
        {
            TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1);//ToUniversalTime()轉換為標准時區的時間,去掉的話直接就用北京時間
            return (long)ts.TotalMilliseconds; //精確到毫秒
            //return (long)ts.TotalSeconds;//獲取10位
        }

  

下面一種方式的唯一區別就在於是否需要獲取異常,

//生成unix格式時間
        public static long getUnix()
        {
            try
            {
                TimeSpan timespan = DateTime.UtcNow - new DateTime(1970, 1, 1);
                //return (long)timespan.TotalSeconds;//獲取10位
                return (long)timespan.TotalMilliseconds;
            }
            catch (Exception)
            {
                return -1;
            }
        }

  

了解更多可以:https://blog.csdn.net/weixin_39885282/article/details/79462443


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM