Как показывать минуты и секунды с помощью секундомера()
Мне нужно показать также минуты, на самом деле я использую этот код для показа секунд, но также нужны минуты
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"
);
как я могу это сделать?
Ответы
Ответ 1
Вы должны использовать:
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"))
Ответ 2
метод TimeSpan.ToString() в .NET 4.0 имеет перегрузку, которая позволяет указать формат.
Чтобы отобразить минуты и секунды:
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);
Ответ 3
Просмотрите документацию для TimeSpan
, struct, возвращаемую stopwatch.Elapsed
. Вы хотите либо свойство Minutes
, либо TotalMinutes
.
Если вы измеряете 62-минутный интервал, ts.Minutes
вернет 2
, а ts.TotalMinutes
вернется 62
.
Ответ 4
Я закодировал этот путь:
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);
Ответ 5
//попробуйте
Stopwatch sw = new Stopwatch();
sw.Start();
Thread.Sleep(10382);
sw.Stop();
Console.Write(sw.Elapsed.Duration());
Ответ 6
TimeTakenOutput.Text = "0" + myStopWatch.Elapsed.Minutes.ToString()
+ ":" + myStopWatch.Elapsed.Seconds.ToString() + "mins";
Ответ 7
ts.Minutes