情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

DateTime.ToFileTime メソッド

2013/12/12

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

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public long ToFileTime()

戻り値

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

例外条件
ArgumentOutOfRangeException

結果のファイル時刻は、西暦 1601 年 1 月 1 日 0:00 (UTC) より前の日時を表します。

Windows ファイル時刻とは、世界協定時刻 (UTC) の A.D. (西暦紀元) 1601 年 1 月 1 日午前 00:00 時からの経過時間 (100 ナノ秒単位) を表す 64 ビット値です。Windows では、アプリケーションによるファイルの作成、アクセス、書き込みの時刻が、ファイル時刻を使用して記録されます。

ToFileTime メソッドでは、現在の DateTime オブジェクトが "現地時刻である"、"UTC 時刻である"、または、"そのいずれでもない" (現地時刻として処理される) ことが、Kind プロパティを使って判断されます。

呼び出し時の注意

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

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

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

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

    
    using System;
    
    public class Example
    {
       public static void Demo(System.Windows.Controls.TextBlock outputBlock)
       {
          DateTime date1 = new DateTime(2010, 3, 14, 2, 30, 00);
          outputBlock.Text += String.Format("Invalid Time: {0}",
                            TimeZoneInfo.Local.IsInvalidTime(date1)) + "\n";
          long ft = date1.ToFileTime();
          DateTime date2 = DateTime.FromFileTime(ft);
          outputBlock.Text += String.Format("{0} -> {1}", date1, date2) + "\n";
       }
    }
    // The example displays the following output:
    //       Invalid Time: True
    //       3/14/2010 2:30:00 AM -> 3/14/2010 3:30:00 AM
    
    
    

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


public static void Demo(System.Windows.Controls.TextBlock outputBlock)
{
   outputBlock.Text += "Enter the file path:" + "\n";
   string filePath = System.Console.ReadLine();

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

      long fileCreationFileTime = fileCreationDateTime.ToFileTime();

      outputBlock.Text += String.Format("{0} in file time is {1}.",
                         fileCreationDateTime,
                         fileCreationFileTime) + "\n";
   }
   else
   {
      outputBlock.Text += String.Format("{0} is an invalid file", filePath) + "\n";
   }
}


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示: