C#中DateTime.Ticks屬性及Unix時間戳轉換


1.相關概念

DateTime.Ticks:表示0001 年 1 月 1 日午夜 12:00:00 以來所經歷的 100 納秒數,即Ticks的屬性為100納秒(1Ticks = 0.0001毫秒)。

Unix時間戳:是從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒。

1秒    = 1000毫秒

1毫秒 = 1000微妙

1微秒 = 1000納秒

因此, 1毫秒 = 10000納秒

2.DateTime變量與時間戳的相互轉換

在實際使用中經常需要精確到毫秒,因此這里下面兩個函數的使用單位都是“毫秒”,若要轉換成“秒”,可以再除以或乘以1000。

/// <summary>
/// 獲取1970-01-01至dateTime的毫秒數
/// </summary>
public long GetTimestamp(DateTime dateTime)
{
    DateTime dt1970 = new DateTime(1970, 1, 1, 0, 0, 0, 0);
    return (dateTime.Ticks - dt1970.Ticks) / 10000;
}

/// <summary>
/// 根據時間戳timestamp(單位毫秒)計算日期
/// </summary>
public DateTime NewDate(long timestamp)
{
    DateTime dt1970 = new DateTime(1970, 1, 1, 0, 0, 0, 0);
    long t = dt1970.Ticks + timestamp * 10000;
    return new DateTime(t);
}


免責聲明!

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



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