DateTime.ToFileTime メソッド

定義

現在の DateTime オブジェクトの値を Windows ファイル時刻に変換します。

public:
 long ToFileTime();
public long ToFileTime ();
member this.ToFileTime : unit -> int64
Public Function ToFileTime () As Long

戻り値

Int64

現在の DateTime オブジェクトの値を Windows ファイル時刻で表した値。

例外

結果のファイル時刻が、 西暦 1601 年 1 月 1 日深夜 12:00 時 (UTC) よりも前の日時を表すことがあります。

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

int main()
{
   System::Console::WriteLine( "Enter the file path:" );
   String^ filePath = System::Console::ReadLine();
   if ( System::IO::File::Exists( filePath ) )
   {
      System::DateTime fileCreationDateTime = System::IO::File::GetCreationTime( filePath );
      __int64 fileCreationFileTime = fileCreationDateTime.ToFileTime();
      System::Console::WriteLine( "{0} in file time is {1}.", fileCreationDateTime, fileCreationFileTime );
   }
   else
   {
      System::Console::WriteLine( "{0} is an invalid file", filePath );
   }
}
open System.IO

printfn "Enter the file path:"
let filePath = stdin.ReadLine()

if File.Exists filePath then
    let fileCreationDateTime =
        File.GetCreationTime filePath

    let fileCreationFileTime = fileCreationDateTime.ToFileTime()

    printfn $"{fileCreationDateTime} in file time is {fileCreationFileTime}."

else
    printfn $"{filePath} is an invalid file"
static void Main(string[] args)
{
    System.Console.WriteLine("Enter the file path:");
    string filePath = System.Console.ReadLine();

    if (System.IO.File.Exists(filePath)) {
        System.DateTime fileCreationDateTime =
            System.IO.File.GetCreationTime(filePath);

        long fileCreationFileTime = fileCreationDateTime.ToFileTime();

        System.Console.WriteLine("{0} in file time is {1}.",
                                 fileCreationDateTime,
                                 fileCreationFileTime);
    }
    else {
        System.Console.WriteLine("{0} is an invalid file", filePath);
    }
}
Public Shared Sub Main()

   System.Console.WriteLine("Enter the file path:")
   Dim filePath As String
   filePath = System.Console.ReadLine()

   If System.IO.File.Exists(filePath) Then
      Dim fileCreationDateTime As System.DateTime
      fileCreationDateTime = System.IO.File.GetCreationTime(filePath)

      Dim fileCreationFileTime As Long
      fileCreationFileTime = fileCreationDateTime.ToFileTime()

      System.Console.WriteLine("{0} in file time is {1}.", _
                               fileCreationDateTime, _
                               fileCreationFileTime)
   Else
      System.Console.WriteLine("{0} is an invalid file", filePath)
   End If
End Sub

注釈

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

このメソッドは ToFileTime 、プロパティを Kind 使用して、現在 DateTime のオブジェクトがローカル時刻、UTC 時刻、またはローカル時刻として扱われる特定の種類の時刻であるかどうかを判断します。

注意 (呼び出し元)

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

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

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

たとえば、標準時から夏時間への切り替えは、2010 年 3 月 14 日の米国太平洋タイム ゾーンで、時刻が 1 時間進んだ午前 2 時から午前 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

適用対象

こちらもご覧ください