1. 程式人生 > 其它 >時間TimeHelper和unix時間戳 2021-12-17

時間TimeHelper和unix時間戳 2021-12-17

Unix時間戳(Unix timestamp),或稱Unix時間(Unix time)、POSIX時間(POSIX time),是一種時間表示方式,
定義為從格林威治時間1970年01月01日00時00分00秒起至現在的總秒數。
Unix時間戳不僅被使用在Unix系統、類Unix系統中,也在許多其他作業系統中被廣泛採用。

unix時間戳是從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒。
Unix時間戳(英文為Unix epoch, Unix time, POSIX time 或 Unix timestamp)
UNIX時間戳的0按照ISO 8601規範為 :1970-01-01T00:00:00Z.
一個小時表示為UNIX時間戳格式為:3600秒;一天表示為UNIX時間戳為86400秒,閏秒不計算。
在大多數的UNIX系統中UNIX時間戳儲存為32位,這樣會引發2038年問題或Y2038。

/// <summary>
    /// 時間幫助類
    /// </summary>
    public class TimeHelper
    {
        /// <summary>
        /// 把時間格式轉換為Unix時間戳格式
        /// </summary>
        /// <param name=”time”></param>
        /// <returns></returns>
        public static long ConvertDateTimeByUnix(DateTime time)
        {
            DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 當地時區
            long timeStamp = (long)(DateTime.Now - startTime).TotalSeconds; // 相差秒數
            return timeStamp;
        }

        /// <summary>
        /// 把Unix時間戳轉化為時間
        /// </summary>
        /// <param name="unixTimeStamp"></param>
        /// <returns></returns>
        public static DateTime GetTimeByUnix(long unixTimeStamp)
        {
            DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 當地時區
            DateTime dt = startTime.AddSeconds(unixTimeStamp);
            return dt;
        }
    }