分も表示する必要があります。実際には、秒を表示するためにこのコードを使用しますが、分も必要です。
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"
);
どのようにできるのか?
以下を使用する必要があります。
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"))
.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);
私はこの方法でコーディングしました:
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);
documentationでTimeSpan
、stopwatch.Elapsed
によって返される構造体を確認してください。 Minutes
またはTotalMinutes
プロパティのいずれかが必要です。
62分間のスパンを測定している場合、ts.Minutes
は2
を返し、ts.TotalMinutes
は62
を返します。
//それを試してみてください
Stopwatch sw = new Stopwatch();
sw.Start();
Thread.Sleep(10382);
sw.Stop();
Console.Write(sw.Elapsed.Duration());
ts.Minutes
TimeTakenOutput.Text = "0" + myStopWatch.Elapsed.Minutes.ToString()
+ ":" + myStopWatch.Elapsed.Seconds.ToString() + "mins";