返回时间。现在精确到毫秒

时间:2017-10-18 17:06:03

标签: c# time

我正在编程一个带有传感器的模拟器,这些传感器以非常高的速度返回一个值。由于正在进行大量的日志记录,因此让我的阵容正确非常重要。为了做到这一点,我试图让计时器排队。然而,这形成了一个问题。当返回毫秒时,它经常返回.01 .1甚至毫秒。这是轻微的抛弃阵容。知道如何强制它返回例如.000?

基本上我正试图做到这一点:

[DEBUG]|18:48:39.449| Sonar 10d | Sonar1 40d | 7.684386
[DEBUG]|18:48:39.45| Sonar 10d | Sonar1 10d | 27.54916
[DEBUG]|18:48:39.5| Sonar 10d | Sonar1 20d | 14.52461
[DEBUG]|18:48:39| Sonar 10d | Sonar1 30d | 9.878839

看起来更像是这样:

[DEBUG]|18:48:39.449| Sonar 10d | Sonar1 40d | 7.684386
[DEBUG]|18:48:39.450| Sonar 10d | Sonar1 10d | 27.54916
[DEBUG]|18:48:39.500| Sonar 10d | Sonar1 20d | 14.52461
[DEBUG]|18:48:39.000| Sonar 10d | Sonar1 30d | 9.878839

不使用像我现在这样的太多代码。

当前代码:

DateTime time = DateTime.Now;    
time.ToString("HH:mm:ss.FFF");

然后添加太多代码。 0和...

2 个答案:

答案 0 :(得分:5)

使用fff代替FFF

time.ToString("HH:mm:ss.fff");

实施例

var now = new DateTime(2017,10,18,12,16,16, 10);
Console.WriteLine("What you want {0:HH:mm:ss.fff}", now);
Console.WriteLine("WHat you have {0:HH:mm:ss.FFF}", now);

生成输出

What you want 12:16:16.010
WHat you have 12:16:16.01

有关更多格式字符串选项,请参阅Custom Date and Time Format Strings

答案 1 :(得分:0)

您可以尝试如下所示的行(请注意小写f

time.ToString("HH:mm:ss.fff");

您可以使用以下代码

进行测试
var s = DateTime.ParseExact("20170810 18:20:13", "yyyyMMdd HH:mm:ss", null).ToString("HH:mm:ss.fff");

这应该打印以下输出

18:20:13.000