C#本地時間轉Unix時間


  1. 獲取Unix時間最高效的方法
       /// <summary>
        /// 擴展方法, 本地時間轉Unix時間; (如 本地時間 "2020-01-01 20:20:10" 轉換unix后等於 1577881210)
        /// </summary>
        /// <param name="time">本地時間</param>
        /// <returns>基於秒的10位數</returns>
        public static long GetTimeStamp2(this DateTime time)
        {
            return time.ToUniversalTime().Ticks / 10000000 - 62135596800;
        }
  1. 另外一種容易理解 但是效率略低的寫法

	/// <summary>
        /// 擴展方法, 本地時間轉Unix時間; (如 本地時間 "2020-01-01 20:20:10" 轉換unix后等於 1577881210)
        /// </summary>
        /// <param name="time">本地時間</param>
        /// <returns>基於秒的10位數</returns>
        public static long GetTimeStamp2(this DateTime time)
        {
            return (long)(time.ToUniversalTime() -
                    new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;
        }
  1. 基於字符串轉Unix時間
    string fmtDate ="yyyy-MM-dd";//也可以是別的格式,如 "ddd MMM d HH:mm:ss 'UTC'zz'00' yyyy"
    string strTimeToParse="1970-01-01";//待轉換的時間,格式需要和fmtDate 一致
    CultureInfo cInfo = CultureInfo.CreateSpecificCulture("en-US");//unix
    DateTime.ParseExact(strTimeToParse, fmtDate, cInfo);//轉成Unix時間 
    //string JSstring = DateTime.Now.ToString(fmtDate, cInfo);//將C#時間轉換成JS時間字符串 

題外話:

例子 類型
DateTime.Now.Ticks long
stopwatch.Elapsedxxx(如TotalDays,TotalSeconds,TotalMilliseconds) long
TimeSpan.Totalxxxx(如TotalDays,TotalSeconds,TotalMilliseconds) double
stopwatch.Elapsed.Totalxxxx double

關於Tick ,一個 'Tick' 周期是 is 100 納秒(ns,nsec,mnanosecond ).
1 毫秒(millisecond ) 等於 1000 微妙(microsecond) ,等於100 000納秒;
2 據說Totalxxx的內部實現是基於Ticks;
tick並不基於 CPU的時鍾周期,但是Tick的計數或根據CPU時鍾發生變化( 2G MZ的CPU來說,大概20個CPU時鍾周期,新增1個Tick )


免責聲明!

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



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