58

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

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"
);

我能怎么做?

4

7 回答 7

80

你应该使用:

ts.ToString("mm\\:ss\\.ff")

这将为您提供时间间隔内的分钟、秒和百分之一秒。

也看看http://msdn.microsoft.com/en-us/library/ee372287.aspx

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

string.Format("{0}:{1}", Math.Floor(ts.TotalMinutes), ts.ToString("ss\\.ff"))
于 2011-04-18T22:03:56.483 回答
26

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

显示分钟和秒:

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

要包括毫秒,您将编写:

string tsOut = elapsed.ToString(@"m\:ss\.ff");

但是请注意,如果总时间跨度超过 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);
于 2011-04-18T21:57:32.737 回答
18

我是这样编码的:

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);
于 2015-06-12T15:34:33.060 回答
8

查看 的文档TimeSpan,返回的结构体stopwatch.Elapsed。您想要MinutesorTotalMinutes属性。

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

于 2011-04-18T21:53:43.490 回答
8

//试试看

       Stopwatch sw = new Stopwatch();

        sw.Start();

        Thread.Sleep(10382);

        sw.Stop();


        Console.Write(sw.Elapsed.Duration());
于 2017-06-02T18:50:55.227 回答
0
TimeTakenOutput.Text = "0" + myStopWatch.Elapsed.Minutes.ToString() 
 + ":" + myStopWatch.Elapsed.Seconds.ToString() + "mins";
于 2014-07-03T03:59:17.100 回答
-3
ts.Minutes

    

于 2011-04-18T21:55:08.527 回答