DateTime.FromFileTime(Int64) 方法

定义

将指定的 Windows 文件时间转换为等效的本地时间。

public static DateTime FromFileTime (long fileTime);

参数

fileTime
Int64

以计时周期表示的 Windows 文件时间。

返回

一个表示本地时间的对象,等效于由 fileTime 参数表示的日期和时间。

例外

fileTime 小于 0 或表示大于 DateTime.MaxValue 的时间

示例

下面的示例演示 FromFileTime 方法。

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 位值,表示自 A.1601 年 1 月 1 日午夜 12:00(午夜 1601 年 1 月 1 日) (C.E.) 协调世界时 (UTC) 以来经过的 100 纳秒间隔数。 Windows 使用文件时间来记录应用程序创建、访问或写入文件时的时间。

参数 fileTime 指定以 100 纳秒刻度表示的文件时间。

从 .NET Framework 版本 2.0 开始,返回值为 ,DateTimeKind 属性为 DateTimeKind.Local

调用方说明

通常, FromFileTime(Int64) 方法还原 DateTimeToFileTime() 方法保存的值。 但是,在以下情况下,这两个值可能有所不同:

  • 如果值的序列化和反序列化 DateTime 发生在不同的时区。 例如,如果 DateTime 对美国东部时区时间为 12:30 P.M. 的值进行序列化,然后在美国太平洋时区反序列化,则会将原始值 12:30 P.M. 调整为上午 9:30,以反映两个时区之间的差异。

  • DateTime如果序列化的值表示本地时区中的无效时间。 在这种情况下, ToFileTime() 方法调整还原 DateTime 的值,使其表示本地时区中的有效时间。

    例如,从标准时间到夏令时制的转换发生在美国太平洋时区 2010 年 3 月 14 日凌晨 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
    

适用于

产品 版本
.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
.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

另请参阅