c# - .NET DateTime 会截断我的秒数吗?

标签 c# .net datetime

我正在尝试格式化一些精确的日期,将它们从 Unix 时间戳转换为 DateTime 对象。我注意到 AddSeconds 方法有一个接受 float 的重载。

我的期望是我可以传入一个数字,例如 1413459415.93417,它会给我一个具有滴答级精度的 DateTime 对象。这是一个不错的假设,还是 AddSeconds 方法的精度仍然不高于毫秒?在转换中,我是否必须自己添加刻度?

我的转换代码如下:

public static DateTime CalendarDateFromUnix(double unixTime)
    {
        DateTime calendarTime = UnixEpoch.AddSeconds(unixTime);
        return calendarTime;
    }

我希望使用以下格式字符串将此日期的 ToString 格式化为 16 Oct 2014 11:36:55.93417:

dd MMM yyyy HH:mm:ss.fffff

不是给我16 Oct 2014 11:36:55.93417,而是给我16 Oct 2014 11:36:55.93400

是我做错了什么还是 .NET 截断了我的浮点秒表示?我是 .NET 的新手,所以前者很有可能。

谢谢

最佳答案

来自 DateTime.AddSeconds 的文档:

The value parameter is rounded to the nearest millisecond.

另一种方法是乘以 TimeSpan.TicksPerSecond,然后将其添加到 UnixEpoch 的刻度中:

return new DateTime(
    UnixEpoch.Ticks + (long) (unixTime * Timespan.TicksPerSecond),
    DateTimeKind.Utc);

关于c# - .NET DateTime 会截断我的秒数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28071833/

相关文章:

javascript - 使用 moment.js 更新提供的时间

excel - 根据列中的值有条件地设置一个单元格的格式

c# - 日期时间和 CultureInfo

.net - 在 .NET 中运行 BAT 程序

c# - 左/右连接与查询中的多个连接

c# - 我如何通知 wpf 拥有的窗口关闭?

c# - 将分钟转换为毫秒

c# - 逆向工程串行通信

C# - 检查字符串是否包含相同顺序的另一个字符串的字符

c# - 为什么这个 XPath 查询不返回任何节点?