言語

DateTime.FromFileTime(Int64) メソッド

定義

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

public:
 static DateTime FromFileTime(long fileTime);
public static DateTime FromFileTime(long fileTime);
static member FromFileTime : int64 -> DateTime
Public Shared Function FromFileTime (fileTime As Long) As DateTime

パラメーター

fileTime
Int64

ティック単位で表される Windows ファイルの時刻。

返品

fileTime パラメーターで表される日付と時刻に相当する現地時刻を表すオブジェクト。

例外

fileTime が 0 未満であるか、 DateTime.MaxValue より大きい時刻を表します。

次の例では、 FromFileTime メソッドを示します。

open System

let fileAge fileCreationTime =
    let now = DateTime.Now
    try
        let fCreationTime =
            DateTime.FromFileTime fileCreationTime
        now.Subtract fCreationTime
    with :? ArgumentOutOfRangeException ->
        // fileCreationTime is not valid, so re-raise the exception.
        reraise ()
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;
    }
}
Public Function FileAge(ByVal fileCreationTime As Long) As System.TimeSpan
   Dim now As System.DateTime
   now = System.DateTime.Now

   Try
      Dim fCreationTime As System.DateTime
      Dim fAge As System.TimeSpan
      fCreationTime = System.DateTime.FromFileTime(fileCreationTime)
      fAge = now.Subtract(fCreationTime)
      Return fAge
   Catch exp As ArgumentOutOfRangeException
      ' fileCreationTime is not valid, so re-throw the exception.
      Throw
   End Try
End Function

注釈

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

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

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

注意 (呼び出し元)

通常、FromFileTime(Int64) メソッドは、DateTime メソッドによって保存されたToFileTime()値を復元します。 ただし、次の条件では、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
open System

let date1 = DateTime(2010, 3, 14, 2, 30, 00)
printfn $"Invalid Time: {TimeZoneInfo.Local.IsInvalidTime date1}"

let ft = date1.ToFileTime()
let date2 = DateTime.FromFileTime ft
printfn $"{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
Module Example
   Public Sub Main()
      Dim date1 As New DateTime(2010, 3, 14, 2, 30, 00)
      Console.WriteLine("Invalid Time: {0}", TimeZoneInfo.Local.IsInvalidTime(date1))
      Dim ft As Long = date1.ToFileTime()
      Dim date2 As DateTime = DateTime.FromFileTime(ft)
      Console.WriteLine("{0} -> {1}", date1, date2) 
   End Sub
End Module
' The example displays the following output:
'       Invalid Time: True
'       3/14/2010 2:30:00 AM -> 3/14/2010 3:30:00 AM

適用対象

こちらもご覧ください