以毫秒级精度返回time.now
问题描述:
我目前正在编程一个模拟器,其传感器以非常高的速度返回一个值。由于正在进行的日志记录丰富,对我来说,让阵容正确无误是非常重要的。为了做到这一点,我试图让计时器排队。然而这是一个问题。当返回毫秒时,它经常返回0.01.1或甚至毫秒。这是轻微抛出阵容。任何想法如何强制它返回例如.000?以毫秒级精度返回time.now
Basicly我试图做这样的:
[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 ...
答
使用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
+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
测试
一行被认为是“代码太多”?你到底在问什么? – Amy
你知道'18:48:39.45'和18:48:39.450是一样的,对吗? – Plutonix
如果它与您可能对String.PadRight感兴趣的其他字段相关(https://msdn.microsoft.com/zh-cn/library/system.string.padright(v=vs.110).aspx)。这将填充字符串给定的长度。如果你最终得到Sonar10或类似的东西,这很有用。 – Chris