📜  C#中的DateTimeOffset.ToFileTime()方法(1)

📅  最后修改于: 2023-12-03 15:00:16.657000             🧑  作者: Mango

C#中的DateTimeOffset.ToFileTime()方法

C#中的DateTimeOffset.ToFileTime()方法是将DateTimeOffset实例转换为表示自 1601 年 1 月 1 日午夜以来的100纳秒间隔数的文件时间。该方法返回一个long类型的值。

语法

下面是DateTimeOffset.ToFileTime()方法的语法:

public long ToFileTime();
示例代码

下面是一个简单的示例代码,演示如何使用DateTimeOffset.ToFileTime()方法来转换时间戳为文件时间:

using System;

class Program
{
    static void Main(string[] args)
    {
        DateTime dateTime = new DateTime(2021, 10, 31, 12, 0, 0);
        DateTimeOffset dateTimeOffset = new DateTimeOffset(dateTime, TimeSpan.Zero);
        long fileTime = dateTimeOffset.ToFileTime();

        Console.WriteLine($"DateTimeOffset: {dateTimeOffset}");
        Console.WriteLine($"File time: {fileTime}");
    }
}
结果

执行上面的代码,将得到如下输出:

DateTimeOffset: 10/31/2021 12:00:00 PM +00:00
File time: 132634080000000000
注意事项
  • 文件时间是以自 1601 年 1 月 1 日午夜 (00:00:00 UTC) 起算的100纳秒时间间隔数。如果要将文件时间转换为本地时间或 UTC 时间,请使用DateTime.FromFileTime()或DateTime.FromFileTimeUtc()方法。
long fileTime = 132634080000000000;
DateTime dateTime = DateTime.FromFileTime(fileTime);
DateTime dateTimeUtc = DateTime.FromFileTimeUtc(fileTime);

Console.WriteLine($"Local time: {dateTime}");
Console.WriteLine($"UTC time: {dateTimeUtc}");
  • 如果DateTimeOffset实例的Offset属性为DateTimeOffset.MinValue.Offset,则抛出ArgumentOutOfRangeException异常。因为这个Offset是 DateTime.MinValue.Offset 的一部分,DateTime.MinValue 的Offset属性是DateTime.MinValue所在的本地时区的偏移值。
结论

在处理日期和时间的应用程序中,C#中的DateTimeOffset.ToFileTime()方法是很有用的,它可以将DateTimeOffset实例转换为文件时间,方便在其他系统中进行时间操作。需要注意的是,文件时间是以自 1601 年 1 月 1 日午夜 (00:00:00 UTC) 起算的100纳秒时间间隔数,必要时需要进行转换。