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?
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"))
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);
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);
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
.
// l'essayer
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";