DateTime.ToFileTime Метод

Определение

Преобразует значение текущего объекта DateTime во временную характеристику файла Windows.

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

Возвращаемое значение

Int64

Значение текущего объекта DateTime, представленное в виде временной характеристики файла Windows.

Исключения

Получившееся время файла представит дату и время до 0:00 1 января 1601 года нашей эры в формате 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 — это 64-разрядное значение, представляющее число 100-наносекундных интервалов, прошедших с 12:00 полуночи, 1 января 1601 г. нашей эры в формате UTC. Windows использует время файла для записи при создании, доступе или записи в файл приложением.

Метод ToFileTime использует Kind это свойство, чтобы определить, является ли текущий DateTime объект локальным временем, временем UTC или неопределенным типом времени, который рассматривается как местное время.

Примечания для тех, кто вызывает этот метод

Обычно метод восстанавливает DateTime значение, FromFileTime(Int64) сохраненное методомToFileTime(). Однако эти два значения могут отличаться в следующих условиях:

— Если сериализация и десериализация DateTime значения происходят в разных часовых поясах. Например, если DateTime значение со временем 12:30 вечера в восточном часовом поясе США сериализуется, а затем десериализуется в тихоокеанском часовом поясе США, исходное значение 12:30 вечера. скорректировано до 9:30 утра. значение , чтобы отразить разницу между двумя часовых поясами.

— Если DateTime значение, сериализованное, представляет недопустимое время в местном часовом поясе. В этом случае метод корректирует восстановленное DateTime значение таким образом, ToFileTime() чтобы оно представляло допустимое время в местном часовом поясе.

Например, переход с стандартного времени на летнее время происходит в тихоокеанском часовом поясе США 14 марта 2010 г. в 2:00, когда время увеличивается на один час до 3:00 утра. Этот интервал часа является недопустимым временем, то есть временным интервалом, который не существует в этом часовом поясе. В следующем примере показано, что когда время, которое попадает в этот диапазон, преобразуется в длинное целочисленное значение 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

Применяется к

См. также раздел