Прочитать на английском

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


DateTime.FromFileTime(Int64) Метод

Определение

Преобразует заданную временную характеристику файла Windows в ее эквивалент по местному времени.

C#
public static DateTime FromFileTime(long fileTime);

Параметры

fileTime
Int64

Временная характеристика файла Windows, выраженная в тактах.

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

Объект, представляющий местное время, эквивалентное дате и времени, которые определяются параметром fileTime.

Исключения

fileTime значение меньше 0 или представляет время, превышающее значение DateTime.MaxValue.

Примеры

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

C#
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;
    }
}

Комментарии

Время файла Windows — это 64-разрядное значение, представляющее количество 100-наносекундных интервалов, прошедших с 12:00 полуночи 1 января 1601 г. н.э. (C.E.) Время в формате UTC. Windows использует время файла для записи, когда приложение создает файл, обращается к файлу или записывает его.

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

Начиная с платформа .NET Framework версии 2.0, возвращаемым значением DateTime является , свойство которого Kind имеет значение DateTimeKind.Local.

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

Обычно метод восстанавливает значение, 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) в метод , как показано в примере.

    C#
    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
    

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

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

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