【C#】現在のUNIXタイムスタンプをミリ秒単位で取得する方法


この記事はプロモーションを含みます。

C#を使用して現在の日時をUNIXタイムスタンプ形式(1970年1月1日からの経過ミリ秒)で取得する方法を解説します。
UNIXタイムスタンプはシステム間での日時の標準的な表現方法として利用されています。

はじめに

C#で現在の日時をUNIXタイムスタンプとして取得するには、DateTime構造体とそのメソッドを活用できます。
UNIXタイムスタンプは、1970年1月1日00:00:00 UTCを基準とした経過時間を表現するものです。
この記事では、UNIXタイムスタンプをミリ秒単位で取得する方法を紹介します。

UNIXタイムスタンプとは?

UNIXタイムスタンプは、コンピュータシステムで日時を表現するために広く使われる形式で、1970年1月1日00:00:00 UTCを起点として、そこからの経過秒数またはミリ秒数を表します。
これはシステム間での日時情報のやりとりに便利らしく、システム間の日時調整やAPIとの連携において使われているようです。

ソースコード

以下は、C#で現在の日時をUNIXタイムスタンプ形式(ミリ秒単位)で取得するサンプルコードです。
こちらを実行すると「1744335389460」のような値が取得されます。

class Program
{
    static void Main(string[] args)
    {
        long millis = GetCurrentUnixTimestampMillis();
        Console.WriteLine(millis);
    }

    /// <summary>
    /// 現在の日時をUNIXタイムスタンプ形式(1970年1月1日からの経過ミリ秒)として取得
    /// </summary>
    /// <returns>
    /// UNIXエポック(1970年1月1日 00:00:00 UTC)から現在までの経過時間をミリ秒単位で表す長整数値
    /// </returns>
    public static long GetCurrentUnixTimestampMillis()
    {
        // 現在の日時を取得
        DateTime now = DateTime.UtcNow;

        // UNIX時間の基準点 (1970年1月1日 00:00:00 UTC)
        DateTime unixEpoch = new(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

        // 経過ミリ秒を計算
        return (long)(now - unixEpoch).TotalMilliseconds;
    }
}

本コードの解説になります。

18行目でDateTime.UtcNowを使って現在のUTC(協定世界時)を取得します。
この値がUNIXエポック(1970年1月1日 00:00:00 UTC)からの経過時間となります。

21行目でUNIXエポックを表現するために、DateTime構造体のコンストラクタを使って1970年1月1日を指定します。

24行目で経過時間を計算し、その値をミリ秒単位で返します。
TotalMillisecondsは経過時間をミリ秒単位で返すプロパティです。

コメント

タイトルとURLをコピーしました