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

これにより、時間間隔で分、秒、および100分の1秒が得られます。

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 に答える
8

によって返される構造体のドキュメントをTimeSpan確認してstopwatch.Elapsedください。MinutesまたはTotalMinutesプロパティのいずれかが必要です。

62 分のスパンを測定している場合は、ts.Minutesが返さ2れ、ts.TotalMinutesが返され62ます。

于 2011-04-18T21:53:43.490 に答える
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 に答える