C#TimeSpan.Milliseconds格式化为2位数

时间:2018-01-25 23:50:28

标签: c# visual-studio-2017 timespan

我有一个我希望显示minutes:seconds:hundreds of seconds的计时器。 由于C#timespan没有方法可以获得数百个但只有毫秒,我需要以某种方式格式化它。

TimeSpan ts = stopWatch.Elapsed;
currentTime = String.Format("{0:00}:{1:00}:{2:00}", ts.Minutes, ts.Seconds, Math.Round(Convert.ToDecimal(ts.Milliseconds),2));
ClockTextBlock.Text = currentTime;

我尝试过Math.Round但没有任何反应。结果仍然是1-3位数字,如下所示:

01:12:7
01:12:77
01:12:777

我希望格式总是像

01:12:07
01:12:77

5 个答案:

答案 0 :(得分:3)

你可以使用custom TimeSpan format string(这里我们只用ff显示毫秒的前两位数,代表百分之一):

ClockTextBlock.Text = ts.ToString("mm\\:ss\\:ff");

答案 1 :(得分:3)

你需要:

-vvvvv

mongoimport --helpString.Format(@"Time : {0:mm\:ss\.ff}", ts) 对象的位置。您也可以随时将其扩展为包含小时数等。"ts"内容是第二个分数的有效位数

答案 2 :(得分:1)

您可以设置DateTime类型的时区,加上Timespan范围。 你会得到一个日期时间并格式化它!

  DateTime timezone = new DateTime(1, 1, 1);

  TimeSpan span = stopWatch.Elapsed;

  ClockTextBlock.Text=(timezone + span).ToString("mm:ss:ff");

答案 3 :(得分:0)

由于毫秒是1/1000秒,所以你需要做的就是将毫秒除以10得到100秒。如果您担心舍入,那么只需在除法之前手动完成。

    int hundredths = (int)Math.Round((double)ts.Milliseconds / 10);

    currentTime = String.Format("{0}:{1}:{2}", ts.Minutes.ToString(D2), ts.Seconds.ToString(D2), hundredths.ToString(D2);

    ClockTextBlock.Text = currentTime;

答案 4 :(得分:0)

只需将格式放入toString,它就会显示所需的格式:)

        Stopwatch s2 = new Stopwatch();
        s2.Start();
        Console.WriteLine(s2.Elapsed.ToString(@"hh\:mm\:ss"));