Как показать минуты и секунды с помощью секундомера () - PullRequest
46 голосов
/ 19 апреля 2011

Мне нужно показать также минуты, на самом деле я использую этот код для отображения секунд, но также нужны минуты

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

как мне это сделать?

Ответы [ 7 ]

67 голосов
/ 19 апреля 2011

Вы должны использовать:

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"))
18 голосов
/ 19 апреля 2011

Метод 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);
10 голосов
/ 12 июня 2015

Я кодировал так:

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);
7 голосов
/ 19 апреля 2011

Просмотрите документацию для TimeSpan, структура возвращена stopwatch.Elapsed. Требуется свойство Minutes или TotalMinutes.

Если вы измеряете 62-минутный интервал, ts.Minutes вернет 2, а ts.TotalMinutes вернет 62.

5 голосов
/ 02 июня 2017

// попробуйте

       Stopwatch sw = new Stopwatch();

        sw.Start();

        Thread.Sleep(10382);

        sw.Stop();


        Console.Write(sw.Elapsed.Duration());
0 голосов
/ 03 июля 2014
TimeTakenOutput.Text = "0" + myStopWatch.Elapsed.Minutes.ToString() 
 + ":" + myStopWatch.Elapsed.Seconds.ToString() + "mins";
0 голосов
/ 19 апреля 2011
ts.Minutes

...