Поделиться через


DateTime.ToFileTime Метод

Определение

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

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

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

Значение текущего DateTime объекта, выраженное как время файла Windows.

Исключения

Полученное время файла будет представлять дату и время до 12:00 полуночи 1 января 1601 г. в формате UTC.

Примеры

В следующем примере демонстрируется ToFileTime метод.

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-nanosecond, прошедших с 12:00 полуночи, 1 января 1601 года A.D. (C.E.) Координированное универсальное время (UTC). Windows использует время записи файла при создании, доступе к приложению или записи в файл.

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

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

Обычно FromFileTime(Int64) метод восстанавливает DateTime значение, сохраненное методом 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
    
    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
    

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

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