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

Can*_*aIT 7 .net c# datetime

我试图格式化一些精确的日期,将它们从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;
    }
Run Code Online (Sandbox Code Playgroud)

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

dd MMM yyyy HH:mm:ss.fffff
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

Jon*_*eet 11

来自以下文件DateTime.AddSeconds:

value参数四舍五入到最接近的毫秒.

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

return new DateTime(
    UnixEpoch.Ticks + (long) (unixTime * Timespan.TicksPerSecond),
    DateTimeKind.Utc);
Run Code Online (Sandbox Code Playgroud)