C# DateTime 時間轉換與時間戳


Unix時間戳,從1970-1-1 0:0:0 UTC到現在的累計時間:秒數,毫秒數

public static DateTime UnixTimeStampStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

DateTime的Ticks: 單位是 100 毫微秒,表示自 0001 年 1 月 1 日午夜 12:00:00 以來已經過的時間的以 100 毫微秒為間隔的間隔數。

可以通過轉換DateTime到Ticks或秒,毫秒或自定義格式來生成時間戳。

 

轉換DateTime為Ticks:

    public static long DateTimeToTicks(DateTime time)
        {
            long value = time.ToUniversalTime().Ticks;
            return value;
        }

轉換Ticks為DateTime:

        public static DateTime TicksToDateTime(long value)
        {
            DateTime time =
                TimeZoneInfo.ConvertTimeFromUtc(new DateTime(value),
                TimeZoneInfo.Local);
            return time;
        }

注意:轉換Ticks獲得的DateTime時區為UTC,需要轉換為當地時區。

 

DateTime轉換為秒:

        public static long DateTimeToTimeStamp(DateTime dateTime)
        {
            return (long)(dateTime.ToUniversalTime() - UnixTimeStampStart).TotalSeconds;
        }

使用傳入的時間-之前定義的Unix時間戳開始時間,再獲取時間差的累計秒。

 

秒轉換為DateTime:

        public static DateTime TimeStampToDateTime(long sec)
        {
            return UnixTimeStampStart.AddSeconds(sec).ToLocalTime();
        }

 

也可使用同樣方法轉換為毫秒,由毫秒轉換回DateTime。

 

自定義時間戳:

我自定義了一種時間戳,使用字符串格式化表示來定義時間戳。

比如對於:年-月-日_時-分-秒 的格式化轉換定義:

        public static string DTToMyTS(DateTime dt)
        {
            string ts = dt.ToString("yyyy-MM-dd_hh-mm-ss");
            return ts;
        }

 


免責聲明!

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



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