C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でUnixタイムスタンプを取得する3つの方法【初心者向け解説】

Unixタイムスタンプは、主にUnix系オペレーティングシステムで使用される時間の表現方法です。しかし、タイムゾーンに依存せず世界中のどの地域でも同じ時刻を表せるため、WindowsやmacOSなど他のOSやプログラミング言語でも広く活用されています。

Unixタイムスタンプは、1970年1月1日0時0分0秒(UTC)を起点(エポック)とした経過秒数で時刻を表します。つまり、特定の日時とエポックとの間の秒数がそのままタイムスタンプとして扱われます。

この記事では、C#でUnixタイムスタンプを取得する代表的な3つの方法を、サンプルコードと実行結果とともに解説します。

方法1:DateTime.Now.Subtract()とTotalSecondsを使う

現在日時から1970年1月1日のDateTimeオブジェクトを減算し、TotalSecondsプロパティで経過秒数を取得する方法です。

class Program{
    static void Main(string[] args){
        Int32 unixTimestamp = (Int32)(DateTime.Now.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
        Console.WriteLine("The Unix Timestamp is {0}", unixTimestamp);
        Console.ReadLine();
    }
}

実行結果

1596837896

方法2:DateTimeOffset.Now.ToUnixTimeSeconds()を使う

.NET Framework 4.6以降では、DateTimeOffset構造体のToUnixTimeSeconds()メソッドを使うのが最もシンプルで推奨される方法です。タイムゾーンの変換も自動的に処理されます。

class Program{
    static void Main(string[] args){
        var unixTimestamp = DateTimeOffset.Now.ToUnixTimeSeconds();
        Console.WriteLine("The Unix Timestamp is {0}.", unixTimestamp);
        Console.ReadLine();
    }
}

実行結果

1596819230.

方法3:TimeSpan構造体を使う

TimeSpan構造体を利用して、エポックからのTicks差分から経過秒数を計算する方法です。Ticks単位で細かく制御したい場合に有効です。

class Program{
    static void Main(string[] args){
        TimeSpan epochTicks = new TimeSpan(new DateTime(1970, 1, 1).Ticks);
        TimeSpan unixTicks = new TimeSpan(DateTime.Now.Ticks) - epochTicks;
        Int32 unixTimestamp = (Int32)unixTicks.TotalSeconds;
        Console.WriteLine("The Unix Timestamp is {0}.", unixTimestamp);
        Console.ReadLine();
    }
}

実行結果

1596839083

まとめ

C#でUnixタイムスタンプを取得するには、上記の3つの方法があります。特別な理由がない限り、コードが簡潔でタイムゾーン処理も正確な「DateTimeOffset.Now.ToUnixTimeSeconds()」を使用するのがおすすめです。Int32型は2038年問題により上限があるため、長期的な運用を見据える場合はlong型(Int64)での扱いも検討しましょう。

  1. Windowsのタスクバーから「Get Windows 10」アイコンを削除する3つの方法

    Windows 10のリリースが間近に迫り、多くのユーザーが待ち望んでいます。新バージョンには、Windows HelloやCortana、新しいEdgeブラウザなど魅力的な機能が搭載され、評判の悪かったスタート画面も改善されました。さらに、Windows 7以降のユーザーなら無償でアップグレードでき、リリース日も7月29日に決定済みです。リリース日が近づくにつれ、Windows 7やWindows 8のユーザーのほとんどが、タスクバーに表示される「無料アップグレードを予約する」という新しいアイコンを目にしていることでしょう。 しかし、このタスクバーアイコンには厄介な点があります。アップグレ

  2. C#でタプルの6番目の要素を取得する方法【Item6プロパティの使い方】

    C#のタプル(Tuple)から6番目の要素を取得するには、Item6プロパティを使用します。System名前空間のTupleクラスは、Item1からItem7までの読み取り専用プロパティを持っており、それぞれ対応する位置の要素にアクセスできます。 例1:Item6プロパティで6番目の要素を取得する 次のコードでは、Tuple.Createメソッドで7つの要素を持つタプルを2つ作成し、Equalsメソッドによる等価性の確認、GetHashCodeメソッドによるハッシュコードの取得を行った後、Item6プロパティで6番目の要素を取り出しています。 using System; public clas