挑战
我有一个 double t,要显示成 hh:mm:ss.fffffff。用秒数转换TimeSpan再toString的办法,发现毫秒之后永远是0。对于短于0.5毫秒的时间,不能正确显示。
如 0.00001秒被显示为 00:00:00.0000000
问题
关键是,C#里面TimeSpan.FromSeconds等等是取整到毫秒的。即使TimeSpan.FromMilliseconds(double x)也是这样。 就是说:
string tStr= TimeSpan.FromMilliseconds(1234.5).ToString("G");
得到 tStr “00:00:01.2350000"
解答
用TimeSPan.FromTick(long ticks)就可以, 1个tick是100纳秒。
double t = 1.2345;
string tStr = TimeSpan.FromTicks((long)(t / 100e-9)).ToString("G");
tStr为 00:00:01.2345000