秒表经过时间的DateTime解析始终从12:00:00开始

时间:2012-02-27 08:03:06

标签: c# .net datetime

我正在尝试将秒表中经过的时间解析为特定格式==> 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");

2 个答案:

答案 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仍支持standardcustom格式化。

答案 1 :(得分:0)

使用以下内容:

string formattedResult = _stopwatch.Elapsed.ToString(@"hh\:mm\:ss\.f");