web-dev-qa-db-fra.com

Comment afficher les minutes et les secondes avec Chronomètre ()

J'ai besoin d'afficher également les minutes, en fait j'utilise ce code pour afficher les secondes, mais j'ai également besoin des minutes

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

comment puis-je faire?

47
ale

Tu devrais utiliser:

ts.ToString("mm\\:ss\\.ff")

cela vous donnera des minutes, des secondes et des centièmes de seconde dans un intervalle de temps.

jetez également un œil à http://msdn.Microsoft.com/en-us/library/ee372287.aspx

EDITÉ: eh bien si vous voulez que les minutes soient votre plus grosse unité, vous pouvez faire ce qui suit:

string.Format("{0}:{1}", Math.Floor(ts.TotalMinutes), ts.ToString("ss\\.ff"))
67
Andrei

La méthode TimeSpan.ToString () dans .NET 4.0 a une surcharge qui vous permet de spécifier le format.

Pour afficher les minutes et les secondes:

TimeSpan elapsed = GetElapsedTime(); // however you get the amount of time elapsed
string tsOut = elapsed.ToString(@"m\:ss");

Pour inclure les millisecondes, vous écririez:

string tsOut = elapsed.ToString(@"m\:ss\.ff");

Notez cependant que cela ne fera pas ce que vous attendez si la durée totale est supérieure à 60 minutes. La valeur "minutes" affichée sera elapsed.Minutes, qui est fondamentalement identique à ((int)elapsed.TotalMinutes) % 60). Donc, si le temps total était de 70 minutes, ce qui précède affichera 10:00.

Si vous voulez afficher le total des minutes et des secondes de manière fiable, vous devez faire le calcul vous-même.

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);
19
Jim Mischel

J'ai codé de cette façon:

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);
10
Edu Pelais

Consultez la documentation pour TimeSpan , la structure renvoyée par stopwatch.Elapsed. Vous voulez la propriété Minutes ou TotalMinutes.

Si vous mesurez une durée de 62 minutes, ts.Minutes renverra 2, et ts.TotalMinutes renverra 62.

7
Michael Petrotta

// l'essayer

       Stopwatch sw = new Stopwatch();

        sw.Start();

        Thread.Sleep(10382);

        sw.Stop();


        Console.Write(sw.Elapsed.Duration());
5
Felipe Augusto
ts.Minutes

0
Mark Cidade
TimeTakenOutput.Text = "0" + myStopWatch.Elapsed.Minutes.ToString() 
 + ":" + myStopWatch.Elapsed.Seconds.ToString() + "mins";
0
PLS HELP