gpt4 book ai didi

c# - 如何避免 .NET 中从 Unix 时间戳转换为 DateTime 并返回的精度损失?

转载 作者:太空宇宙 更新时间:2023-11-03 20:06:20 24 4
gpt4 key购买 nike

考虑以下片段

var original = new DateTime(635338107839470268);
var unixTimestamp = (original - new DateTime(1970,1,1)).TotalSeconds;
// unixTimestamp is now 1398213983.9470267

var back = new DateTime(1970,1,1).AddSeconds(1398213983.9470267);
// back.Ticks is 635338107839470000

如您所见,我们返回的 Ticks 值与开始时不同。

在日期与 unix 时间戳之间来回转换时,我们如何避免 C# 中的这种精度损失?

最佳答案

http://msdn.microsoft.com/en-us/library/system.datetime.addseconds.aspx

DateTime.AddSeconds() 根据文档舍入到最接近的毫秒(10,000 滴答)。

使用刻度:

// We have a DateTime in memory
DateTime original = new DateTime(635338107839470268);

// We convert it to a Unix Timestamp
double unixTimestamp = (original - new DateTime(1970, 1, 1)).TotalSeconds;

// unixTimestamp is saved somewhere

// User needs to make a 100% precise DateTime from this unix timestamp
DateTime epochInstance = new DateTime(1970, 1, 1);
DateTime back = epochInstance.AddTicks((long)(unixTimestamp * TimeSpan.TicksPerSecond));
// back.Ticks is now 635338107839470268

关于c# - 如何避免 .NET 中从 Unix 时间戳转换为 DateTime 并返回的精度损失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23233643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com