为什么C#DateTime字符串格式化不起作用?

时间:2013-07-06 21:24:06

标签: c# .net

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

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

Code output

2 个答案:

答案 0 :(得分:8)

您需要查看TimeSpan的格式,而不是DateTime。这是.NET 4.0(Visual Studio 2010)中的新功能。请参阅:MSDN: Custom TimeSpan Format Strings

我会尝试类似的事情:

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)

答案 1 :(得分:0)

你想:

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

你必须逃避冒号和句号