如何使用秒表()显示分钟和秒

ale*_*ale 48 c# stopwatch

我还需要显示分钟,实际上我使用此代码显示秒数,但也需要分钟

TimeSpan ts = stopwatch.Elapsed;
Console.WriteLine("File Generated: " + _writer.getBinaryFileName(filePath, Convert.ToInt32(logSelected)) + " in "  + "{0}.{1:D2}" + "seconds", 
    ts.Seconds, 
    ts.Milliseconds/10 + "\n"
);
Run Code Online (Sandbox Code Playgroud)

我能怎么做?

And*_*rei 67

你应该使用:

ts.ToString("mm\\:ss\\.ff")
Run Code Online (Sandbox Code Playgroud)

这将在一个时间间隔内给你分钟,秒和百分之一秒.

另请参阅http://msdn.microsoft.com/en-us/library/ee372287.aspx

编辑: 如果您希望分钟成为您最大的单位,您可以执行以下操作:

string.Format("{0}:{1}", Math.Floor(ts.TotalMinutes), ts.ToString("ss\\.ff"))
Run Code Online (Sandbox Code Playgroud)

  • 为此添加了解决方案. (4认同)
  • 但问题是,如果总时间跨度是70分钟,它将显示"10:00.00". (3认同)

Jim*_*hel 19

.NET 4.0中的TimeSpan.ToString()方法具有允许您指定格式的重载.

显示分钟和秒:

TimeSpan elapsed = GetElapsedTime(); // however you get the amount of time elapsed
string tsOut = elapsed.ToString(@"m\:ss");
Run Code Online (Sandbox Code Playgroud)

要包含毫秒,您可以写:

string tsOut = elapsed.ToString(@"m\:ss\.ff");
Run Code Online (Sandbox Code Playgroud)

但请注意,如果总时间跨度超过60分钟,则无法达到预期效果.显示的"分钟"值将elapsed.Minutes基本相同((int)elapsed.TotalMinutes) % 60).因此,如果总时间为70分钟,则会显示以上内容10:00.

如果要可靠地显示总分和秒,则必须自己进行数学计算.

int minutes = (int)elapsed.TotalMinutes;
double fsec = 60 * (elapsed.TotalMinutes - minutes);
int sec = (int)fsec;
int ms = 1000 * (fsec - sec);
string tsOut = String.Format("{0}:{1:D2}.{2}", minutes, sec, ms);
Run Code Online (Sandbox Code Playgroud)


Edu*_*ais 12

我用这种方式编码:

using System.Diagnostics;
...

Stopwatch watch = new Stopwatch();
watch.Start();

// here the complex program.
...

watch.Stop();

TimeSpan timeSpan = watch.Elapsed;

Console.WriteLine("Time: {0}h {1}m {2}s {3}ms", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds);
Run Code Online (Sandbox Code Playgroud)

  • 使用 timeSpan.TotalHours, (2认同)

Mic*_*tta 7

查看返回的结构的文档TimeSpanstopwatch.Elapsed.你想要Minutes或者TotalMinutes属性.

如果您测量的是62分钟的跨度,ts.Minutes将返回2,ts.TotalMinutes并将返回62.

  • 但是要小心.如果总时间跨度为62分30秒,则"ts.TotalMinutes"将返回"62.5". (8认同)

Fel*_*sto 5

//试试吧

       Stopwatch sw = new Stopwatch();

        sw.Start();

        Thread.Sleep(10382);

        sw.Stop();


        Console.Write(sw.Elapsed.Duration());
Run Code Online (Sandbox Code Playgroud)