我正在尝试将秒表中经过的时间解析为特定格式==> hh:mm:ss.f因为我在时间计数器上用它作为显示器。这就是我尝试做的事情:
string counter = DateTime.Parse(_stopwatch.Elapsed.ToString()).ToString("hh:m:ss.f");
问题在于,而不是像这样的计数器显示:xx:xx:xx.x它总是显示为:12:xx:xx.x
为什么总是从12开始?
我想看到这样的事情:00:12:34.5表示12分钟。已经过了34s而不是12:12:34.5。
我在这里缺少什么?
感谢。
更新
修正了我自己的问题,做到了这一点:
string formattedResult = _stopwatch.Elapsed.ToString(@"hh\:mm\:ss\.f");
答案 0 :(得分:3)
您使用的是使用12小时制的hh
,而不是使用24小时制的HH
。
请注意,这与解析stopwach的结果无关 - 如果你写的话,你会得到相同的结果:
using System;
class Test
{
static void Main()
{
DateTime dateTime = new DateTime(2012, 2, 27, 0, 34, 45, 56);
// Prints 12:34:45
Console.WriteLine(dateTime.ToString("hh:mm:ss"));
}
}
目前尚不清楚为什么要格式化Stopwatch.Elapsed
的结果只是为了再次解析它然后重新格式化它。尽量避免无关的字符串转换。如果您使用的是.NET 4,TimeSpan
仍支持standard和custom格式化。
答案 1 :(得分:0)
使用以下内容:
string formattedResult = _stopwatch.Elapsed.ToString(@"hh\:mm\:ss\.f");