System time – DateTime & Unix time

每過一段時間就會忘記這個麻煩的時間問題, 留紀錄給未來的我.

DateTime 是微軟體系常用的時間格式(base on SYSTEMTIME).
時間起點為 UTC 1年1月1日 0時0分0秒. (可用 DateTime.MinValue 表示)
刻度為「Tick
1 tick = 100 ns. 所以 1 ms = 1,000 us = 1,000,000 ns = 10,000 ticks.

而 Unix time(或稱 POSIX time)因為廣泛用於類Unix系統得名.
時間起點為 UTC 1970年1月1日 0時0分0秒.
刻度為「秒」

知道兩方的定義後, 就可以進行轉換.

Unix time → DateTime

public static DateTime UnixTimeStampToDateTime( double unixTimeStamp )
{
    // Unix timestamp is seconds past epoch
    System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
    dtDateTime = dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();
    return dtDateTime;
}

DateTime → Unix time

Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

.NET 4.6 之後有提供更直接的API.

Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

.NET 4.6 之後有提供更直接的API.

DateTimeOffset.ToUnixTimeSeconds()

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.