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

Параметр fileTime задает время файла, выраженное в 100-наносекундах.

Начиная с .NET Framework версии 2.0 возвращаемое значение является свойствомDateTime.KindDateTimeKind.Local

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

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

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

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

Например, переход с стандартного времени на летнее время происходит в часовом поясе США 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

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

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