1

以下代码未正确格式化时间。我想要的只是分钟:秒:毫秒_with_3_decimals 但无论我选择什么格式,它都会被忽略,并且时间以默认格式显示。

Log(LogMsgType.Normal, String.Format("+{0:mm:ss.fff} ", DateTime.Now.Subtract(latest)));

代码输出

4

2 回答 2

8

您需要查看 的格式TimeSpan,而不是DateTime. 这是 .NET 4.0 (Visual Studio 2010) 中的新功能。请参阅:MSDN:自定义TimeSpan格式字符串

我会尝试类似的东西:

String.Format("+{0:mm':'ss'.'fff} ", DateTime.Now - latest)

(最好先检查它永远不会超过 60 分钟,否则您将失去时间跨度中最重要的部分。)

注意:如果您使用的是 .NET 3.5 或更早版本,这将无法正常工作,因为TimeSpan中没有IFormattable。在这种情况下,我建议:

var span = DateTime.Now - latest;
  ...
String.Format("+{0:D2}:{1:D2}.{2:D3} ", span.Minutes, span.Seconds, span.Milliseconds)
于 2013-07-06T21:28:06.233 回答
0

你要:

@"+{0:mm\:ss\.fff} "

你必须逃避冒号和句号

于 2013-07-06T21:35:20.890 回答