英語で読む

次の方法で共有


DateTime.FromFileTime(Int64) メソッド

定義

指定された Windows ファイル時刻を同等の現地時刻に変換します。

public static DateTime FromFileTime (long fileTime);

パラメーター

fileTime
Int64

タイマー刻み単位で表した Windows ファイル時刻。

戻り値

fileTime パラメーターによって表された日時に相当する現地時刻を表すオブジェクト。

例外

fileTime が 0 より小さいか、 DateTime.MaxValue より大きい時刻を表します。

FromFileTimeメソッドの例を次に示します。

public System.TimeSpan FileAge(long fileCreationTime) {

    System.DateTime now = System.DateTime.Now;
    try {
        System.DateTime fCreationTime =
            System.DateTime.FromFileTime(fileCreationTime);
        System.TimeSpan fileAge = now.Subtract(fCreationTime);
        return fileAge;				
    }
    catch (ArgumentOutOfRangeException) {
        // fileCreationTime is not valid, so re-throw the exception.
        throw;
    }
}

注釈

Windows ファイル時刻は、1601 年 1 月 1 日午前 0 時から経過した 100 ナノ秒間隔の数を表す 64 ビット値です (C.E.)協定世界時 (UTC)。 Windows では、アプリケーションがファイルを作成、アクセス、またはファイルに書き込むときに、ファイル時刻を使用して記録します。

パラメーターは fileTime 、100 ナノ秒のティックで表されるファイル時刻を指定します。

.NET Framework バージョン 2.0 以降では、戻り値は、 プロパティが DateTimeKind である ですDateTimeKind.Local

注意 (呼び出し元)

通常、 メソッドはFromFileTime(Int64)、 メソッドによって保存された値をToFileTime()復元DateTimeします。 ただし、次の条件では、2 つの値が異なる場合があります。

  • 値のシリアル化と逆シリアル化が DateTime 異なるタイム ゾーンで発生する場合。 たとえば、米国東部標準時ゾーンの時刻が午後 12 時 30 分の値をシリアル化した後、米国太平洋タイム ゾーンで逆シリアル化した場合 DateTime 、元の値は午前 9 時 30 分に調整され、2 つのタイム ゾーン間の差が反映されます。

  • シリアル化された DateTime 値がローカル タイム ゾーンの無効な時刻を表す場合。 この場合、 メソッドは ToFileTime() 、ローカル タイム ゾーンの有効な時刻を表すように復元された DateTime 値を調整します。

    たとえば、標準時から夏時間への切り替えは、2010 年 3 月 14 日午前 2 時 (時刻が 1 時間進んだ場合) から午前 3 時に米国太平洋標準時ゾーンで発生します。この時間間隔は無効な時間です。つまり、このタイム ゾーンに存在しない時間間隔です。 次の例は、この範囲内にある時刻が メソッドによって長整数に変換され、 メソッドによってToFileTime()FromFileTime(Int64)復元された場合に、元の値が有効な時刻になるように調整されることを示しています。 この例に示すように、特定の日付と時刻の値を メソッドに IsInvalidTime(DateTime) 渡すことで、変更の対象となる可能性があるかどうかを判断できます。

    using System;
    
    public class Example
    {
       public static void Main()
       {
          DateTime date1 = new DateTime(2010, 3, 14, 2, 30, 00);
          Console.WriteLine("Invalid Time: {0}",
                            TimeZoneInfo.Local.IsInvalidTime(date1));
          long ft = date1.ToFileTime();
          DateTime date2 = DateTime.FromFileTime(ft);
          Console.WriteLine("{0} -> {1}", date1, date2);
       }
    }
    // The example displays the following output:
    //       Invalid Time: True
    //       3/14/2010 2:30:00 AM -> 3/14/2010 3:30:00 AM
    

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

こちらもご覧ください