2016-12-15 47 views
-2

我有两个uint32变量。它们以秒和微秒表示Unix时间戳。第一个变量保存秒,第二个保存微秒。我如何将它们添加到一起并将它们转换为DateTimeOffset。我想要一个特定于.Net 4.6的答案,它具有新的FromUnixTimeSeconds()方法和一个可以在.Net 4.6之前的代码中工作的答案。秒和微秒(Unix时间)到DateTimeOffset

+0

所以,只需拨打FromUnixTimeSeconds与秒,然后加入到微秒结果? – Evk

+0

DateTimeOffset上没有AddMicroseconds方法。我想我需要先蜱。 – Mark

回答

1

微秒是1/1.000.000秒。 DateTimeOffset确实没有AddMicroseconds,但它有AddTicks。蜱是一秒钟的1/10.000.000,所以:

DateTimeOffset.FromUnixTimeSeconds(seconds).AddTicks(microSeconds * 10); 

此前.NET 4.6,你可以做这样的事情:

new DateTimeOffset(DateTime.SpecifyKind(new DateTime(1970, 1, 1), DateTimeKind.Utc)).AddSeconds(seconds).AddTicks(microSeconds * 10);