问题
I need to show also the minutes, actually I use this code for show the seconds, but also need the 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"
);
how can I do?
回答1:
You should use:
ts.ToString("mm\\:ss\\.ff")
this will give you minutes, seconds and the hundredths of a second in a time interval.
also take a look at http://msdn.microsoft.com/en-us/library/ee372287.aspx
EDITED: well if you want minutes be your biggest unit you can do the following:
string.Format("{0}:{1}", Math.Floor(ts.TotalMinutes), ts.ToString("ss\\.ff"))
回答2:
The TimeSpan.ToString() method in .NET 4.0 has an overload that lets you specify the format.
To display minutes and seconds:
TimeSpan elapsed = GetElapsedTime(); // however you get the amount of time elapsed
string tsOut = elapsed.ToString(@"m\:ss");
To include the milliseconds, you would write:
string tsOut = elapsed.ToString(@"m\:ss\.ff");
Note, however, that this won't do what you expect if the total timespan is more than 60 minutes. The "minutes" value displayed will be elapsed.Minutes
, which is basically the same as ((int)elapsed.TotalMinutes) % 60)
. So if the total time was 70 minutes, the above will show 10:00
.
If you want to show the total minutes and seconds reliably, you have to do the math yourself.
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:
I've coded this way:
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);
回答4:
Review the documentation for TimeSpan, the struct returned by stopwatch.Elapsed
. You want either the Minutes
or TotalMinutes
property.
If you're measuring a 62 minute span, ts.Minutes
will return 2
, and ts.TotalMinutes
will return 62
.
回答5:
//try it
Stopwatch sw = new Stopwatch();
sw.Start();
Thread.Sleep(10382);
sw.Stop();
Console.Write(sw.Elapsed.Duration());
回答6:
ts.Minutes
回答7:
TimeTakenOutput.Text = "0" + myStopWatch.Elapsed.Minutes.ToString()
+ ":" + myStopWatch.Elapsed.Seconds.ToString() + "mins";
来源:https://stackoverflow.com/questions/5709304/how-show-minutes-and-seconds-with-stopwatch