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

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

C#のDateTimeOffset.FromFileTime()メソッドは、指定されたWindowsファイル時刻を、それと等価なローカル時刻(DateTimeOffset型)に変換するための静的メソッドです。

なお、Windowsファイル時刻とは、1601年1月1日午前0時(UTC)を起点とした経過時間を、100ナノ秒単位(タイマーティック)で表現した値のことです。Windows OSが内部的にファイルの作成日時や更新日時などを管理する際に使用されている形式です。

構文

このメソッドの構文は以下の通りです。

public static DateTimeOffset FromFileTime (long time);

引数のtimeには、変換対象となるWindowsファイル時刻をタイマーティック単位のlong型で指定します。戻り値としては、変換後のローカル時刻を表すDateTimeOffsetオブジェクトが返されます。

使用例1:ファイル時刻に「0」を指定した場合

まずは、基本的な使用例を見てみましょう。ここでは、起点となる時刻そのものを表す「0」を引数に渡しています。

using System;
public class Demo {
   public static void Main() {
      DateTimeOffset offset = DateTimeOffset.FromFileTime(0);
      Console.WriteLine("DateTimeOffset = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ",offset);
   }
}

実行結果

DateTimeOffset = 01 January 1601, 12:00:00

このように、ファイル時刻として「0」を指定すると、Windowsファイル時刻の基準点である1601年1月1日が返されることが確認できます。

使用例2:ティック数を指定した場合

次に、具体的なティック数を指定した例を見てみましょう。ここでは「200000000」を引数として渡しています。

using System;
public class Demo {
   public static void Main() {
      DateTimeOffset offset = DateTimeOffset.FromFileTime(200000000);
      Console.WriteLine("DateTimeOffset = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ",offset);
   }
}

実行結果

DateTimeOffset = 01 January 1601, 12:00:20

200000000ティックは200000000 × 100ナノ秒 = 20秒に相当するため、基準時刻から20秒経過した「1601年1月1日 12:00:20」が出力されました。

まとめ

DateTimeOffset.FromFileTime()メソッドを使うことで、Windows APIなどから取得したファイル時刻(FILETIME構造体の値)を、扱いやすいDateTimeOffset型のローカル時刻へ簡単に変換できます。ファイルシステムのタイムスタンプを処理するアプリケーションを開発する際に非常に便利なメソッドなので、ぜひ活用してみてください。

  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