Подтвердить что ты не робот

Как показывать минуты и секунды с помощью секундомера()

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

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

как я могу это сделать?

4b9b3361

Ответ 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