C#:获取带有微秒的 unix 时间戳

C#: Get unix timestamp with microseconds

如何在 .NET 5 中获取以微秒为单位的当前 unix 时间戳?我环顾四周,只找到了一种方法,可以用 ToUnixTimeMilliseconds 以毫秒为单位获取它,没有任何东西可以包括微秒。

您只需从 DateTimeOffset 中减去 Unix 纪元 (1970-01-01T00:00:00Z) 即可得到 TimeSpan,然后通过除以总计得到微秒10 的刻度数:

using System;

public static class DateTimeOffsetExtensions
{
    private static readonly DateTimeOffset UnixEpoch =
        new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);

    public static long ToUnixTimeMicroseconds(this DateTimeOffset timestamp)
    {
        TimeSpan duration = timestamp - UnixEpoch;
        // There are 10 ticks per microsecond.
        return duration.Ticks / 10;
    }
}

public class Test
{
    static void Main()
    {
        DateTimeOffset now = DateTimeOffset.UtcNow;
        Console.WriteLine(now.ToUnixTimeMicroseconds());
    }
}