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

Is .NET DateTime truncating my seconds?

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

我的期望是我可以传入一个数字,例如 1413459415.93417,它会给我一个具有刻度级精度的 DateTime 对象。这是一个不错的假设,还是 does the AddSeconds method still provide no better than millisecond precision? 在转换中,我必须自己添加刻度吗?

我的转换代码如下:

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);