c# - method - stopwatch startnew
Cómo mostrar minutos y segundos con Cronómetro() (7)
//intentalo
Stopwatch sw = new Stopwatch();
sw.Start();
Thread.Sleep(10382);
sw.Stop();
Console.Write(sw.Elapsed.Duration());
Necesito mostrar también los minutos, en realidad uso este código para mostrar los segundos, pero también necesito los minutos.
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"
);
¿Como lo puedo hacer?
Deberías usar:
ts.ToString("mm//:ss//.ff")
esto le dará minutos, segundos y las centésimas de segundo en un intervalo de tiempo.
también echa un vistazo a http://msdn.microsoft.com/en-us/library/ee372287.aspx
EDITADO: bueno, si quieres que los minutos sean tu unidad más grande, puedes hacer lo siguiente:
string.Format("{0}:{1}", Math.Floor(ts.TotalMinutes), ts.ToString("ss//.ff"))
El método TimeSpan.ToString() en .NET 4.0 tiene una sobrecarga que le permite especificar el formato.
Para mostrar minutos y segundos:
TimeSpan elapsed = GetElapsedTime(); // however you get the amount of time elapsed
string tsOut = elapsed.ToString(@"m/:ss");
Para incluir los milisegundos, debe escribir:
string tsOut = elapsed.ToString(@"m/:ss/.ff");
Tenga en cuenta, sin embargo, que esto no hará lo que espera si el tiempo total es más de 60 minutos. El valor de "minutos" visualizado habrá elapsed.Minutes
. elapsed.Minutes
, que es básicamente el mismo que ((int)elapsed.TotalMinutes) % 60)
. Entonces, si el tiempo total fue de 70 minutos, lo anterior mostrará 10:00
.
Si desea mostrar el total de minutos y segundos de manera confiable, debe hacer los cálculos usted mismo.
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);
He codificado de esta manera:
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);
Revise la documentación de TimeSpan
, la estructura devuelta por el stopwatch.Elapsed
. Desea la propiedad Minutes
o TotalMinutes
.
Si mide un lapso de 62 minutos, ts.Minutes
devolverá 2
y ts.TotalMinutes
devolverá 62
.
TimeTakenOutput.Text = "0" + myStopWatch.Elapsed.Minutes.ToString()
+ ":" + myStopWatch.Elapsed.Seconds.ToString() + "mins";
ts.Minutes