【发布时间】:2021-11-18 17:26:40
【问题描述】:
如何在 .NET 5 中获取当前的 unix 时间戳(以微秒为单位)?我环顾四周,只找到了一种使用ToUnixTimeMilliseconds 以毫秒为单位的方法,而没有任何包含微秒的方法。
【问题讨论】:
-
你为什么要这个?这很重要。 Unix 时间戳的定义有些松散,本质上是一个实现细节。所有 .NET 库都使用日期。所有数据库都有日期类型。
-
@PanagiotisKanavos:有很多地方使用 Unix 时间戳进行通信。它是一个库的时代可能是一个实现细节,但当它是 API 规范的一部分时,它不是。
-
如果你真的想要一个以微秒为单位的 Unix 时间戳,你可以使用
DateTime或DateTimeOffset的Ticks属性,它从 0001-01-01 开始以 100ns 为增量计数。要使用 1970 作为基础,您必须从当前时间中减去它,然后将结果的刻度乘以 10 -
@PanagiotisKanavos:没错——这就是我要写的答案。 (除以 10 而不是相乘。)
-
@PanagiotisKanavos:是的。 (
UtcDateTime.Ticks / (TimeSpan.TicksPerMillisecond / 1000))