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

C#のDateTimeOffset.ToFileTime()メソッドの使い方を徹底解説

C#のDateTimeOffset.ToFileTime()メソッドは、現在のDateTimeOffsetオブジェクトの値をWindowsファイル時刻に変換するために使用されます。戻り値は、現在のDateTimeOffsetオブジェクトの値をWindowsファイル時刻として表現したInt64(long)型の値です。

なお、Windowsファイル時刻とは、西暦1601年1月1日午前0時(UTC)を起点とした経過時間を、100ナノ秒間隔の数値で表したものです。ファイルシステムがタイムスタンプを管理する際に内部的に使用されている形式です。

構文

メソッドの構文は以下のとおりです。

public long ToFileTime ();

引数は取らず、long型(Int64)の値を返します。変換元の日時がWindowsファイル時刻で表現できる範囲外の場合には、ArgumentOutOfRangeExceptionがスローされる点に注意してください。

使用例1:固定日時を変換する

まず、具体的な日時を指定してToFileTime()メソッドを使う例を見てみましょう。

using System;

public class Demo {
    public static void Main() {
        DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 11, 10, 6, 20, 10, new TimeSpan(-5, 0, 0));
        Console.WriteLine("DateTimeOffset = {0}", dateTimeOffset1);

        int hash = dateTimeOffset1.GetHashCode();
        long res = dateTimeOffset1.ToFileTime();

        Console.WriteLine("DateTimeOffset HashCode = {0}", hash);
        Console.WriteLine("Windows file time = {0}", res);
    }
}

実行結果

上記のコードを実行すると、次のような出力が得られます。

DateTimeOffset = 11/10/2019 6:20:10 AM -05:00
DateTimeOffset HashCode = -92293937
Windows file time = 132178584100000000

この例では、オフセット-05:00(UTCより5時間遅れ)の2019年11月10日6時20分10秒という日時が、Windowsファイル時刻「132178584100000000」に変換されています。同時にGetHashCode()メソッドによるハッシュコードの取得も行っています。

使用例2:現在日時を変換する

続いて、DateTimeOffset.Nowプロパティで取得した現在日時を変換する例です。

using System;

public class Demo {
    public static void Main() {
        DateTimeOffset dateTimeOffset1 = DateTimeOffset.Now;
        Console.WriteLine("DateTimeOffset = {0}", dateTimeOffset1);

        long res = dateTimeOffset1.ToFileTime();
        Console.WriteLine("Windows file time = {0}", res);
    }
}

実行結果

実行タイミングによって値は変わりますが、以下のような出力になります。

DateTimeOffset = 10/16/2019 11:16:47 AM +00:00
Windows file time = 132156982075593442

まとめ

DateTimeOffset.ToFileTime()メソッドを使うことで、DateTimeOffsetオブジェクトの値を簡単にWindowsファイル時刻へ変換できます。ファイルシステムのタイムスタンプ操作やWin32 APIとの連携など、OSレベルの時刻情報を扱う場面で活用できる便利なメソッドです。逆に、Windowsファイル時刻からDateTimeOffsetへ変換したい場合は、DateTimeOffset.FromFileTime()メソッドを使用します。

  1. C#のDateTimeOffset.Compare()メソッドの使い方をわかりやすく解説

    C#のDateTimeOffset.Compare()メソッドは、2つのDateTimeOffsetオブジェクトを比較し、最初の日時が2番目の日時よりも「前」なのか、「同じ」なのか、それとも「後」なのかを判定するための静的メソッドです。このメソッドは整数値(int型)を返し、その戻り値によって比較結果が以下のように表されます。0未満 − val1がval2より早い日時である場合0 − val1とval2が同一の日時である場合0より大きい − val1がval2より遅い日時である場合構文DateTimeOffset.Compare()メソッドの構文は以下の通りです。public static i

  2. 【C#入門】DateTimeOffset.AddYears()メソッドの使い方を徹底解説

    C#のDateTimeOffset.AddYears()メソッドは、現在のDateTimeOffsetインスタンスが表す日時に、指定した年数を加算した新しいDateTimeOffset値を返すメソッドです。元のインスタンスの値は変更されず、計算結果が新しいオブジェクトとして返される点に注意してください。構文AddYears()メソッドの構文は以下のとおりです。public DateTimeOffset AddYears (int val);引数valには、加算する年数を整数で指定します。負の値を指定すると、年数を減算(過去にさかのぼる)ことができます。主な特徴戻り値は新しいDateTimeOf