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

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

C#のDateTime.FromFileTimeUtc()メソッドは、指定されたWindowsファイル時刻を、それに相当するUTC(協定世界時)の日付と時刻に変換する静的メソッドです。

Windowsファイル時刻は、1601年1月1日午前0時0分0秒(UTC)を起点として、100ナノ秒単位(タイマーティック)で経過時間を表す形式です。ファイルシステムが保持する作成日時や更新日時などの情報は、この形式で記録されているため、通常のDateTime型として扱う際には本メソッドによる変換が必要になります。

構文

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

public static DateTime FromFileTimeUtc (long time);

パラメータ time には、Windowsファイル時刻を100ナノ秒単位のタイマーティックで表したlong型の値を指定します。戻り値は、変換後のUTC日時を表すDateTimeオブジェクトです。

使用例1:基本的な変換

まずは基本的な使い方を見てみましょう。以下の例では、特定のファイル時刻の値をUTC日時に変換して表示しています。

using System;
public class Demo {
   public static void Main() {
      DateTime d1 = DateTime.FromFileTimeUtc(6500000000000);
      System.Console.WriteLine("DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ",d1);
   }
}

出力結果

DateTime = 08 January 1601, 12:33:20

このように、指定したティック数に対応するUTC日時が出力されます。エポック(起点)が1601年1月1日であるため、比較的小さな値でも1601年前後の日付が得られます。

使用例2:複数の値を変換する

次に、異なる2つのファイル時刻の値を変換する例を紹介します。

using System;
public class Demo {
   public static void Main() {
      DateTime d1 = DateTime.FromFileTimeUtc(0);
      DateTime d2 = DateTime.FromFileTimeUtc(850000000000000);
      Console.WriteLine("DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ",d1);
      Console.WriteLine("New DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ",d2);
   }
}

出力結果

DateTime = 01 January 1601, 12:00:00
New DateTime = 11 September 1603, 07:06:40

注目すべき点として、引数に 0 を渡すと「1601年1月1日 12:00:00」が返されます。これはWindowsファイル時刻の基準となるエポックそのものです。このことから、本メソッドがティック数をエポックからの経過時間として解釈していることが分かります。

まとめ

  • DateTime.FromFileTimeUtc()は、Windowsファイル時刻(100ナノ秒単位のティック)をUTC日時に変換する静的メソッドである
  • エポックは1601年1月1日(UTC)で、0を渡すとその日時が返される
  • ローカル時刻ではなく常にUTCで結果が得られるため、ローカル時刻が必要な場合はToLocalTime()などを併用する
  1. C#のDateTime.AddDays()メソッドの使い方を徹底解説!日付に日数を加算する方法

    C#のDateTime.AddDays()メソッドは、現在のDateTimeインスタンスの値に指定した日数を加算するためのメソッドです。このメソッドは元のDateTimeオブジェクトを変更するのではなく、計算結果として新しいDateTimeオブジェクトを返します。そのため、戻り値を受け取る変数が必要になる点に注意しましょう。 基本構文 DateTime.AddDays()メソッドの構文は以下のとおりです。 public DateTime AddDays (double days); 引数 days には加算したい日数をdouble型で指定します。負の値を渡すことで、日付を減算(過去の日付に移動

  2. C#のDateTime.Add()メソッドとは?構文と使い方を実例付きで解説

    C#のDateTime.Add()メソッドは、指定したTimeSpanの値を現在のDateTimeインスタンスに加算し、その結果として新しいDateTimeオブジェクトを返すメソッドです。元のインスタンス自体は変更されず、計算結果が新しいオブジェクトとして生成される点が特徴です。基本構文DateTime.Add()メソッドの構文は以下の通りです。public DateTime Add (TimeSpan val);引数 val には、加算する時間間隔を表す TimeSpan を指定します。正の値を渡せば日時が進み、負の値を渡せば日時が遡ります。使用例1:日付を加算するまずは、115日分のTim