Question

I am compiling in C# using .NET 3.5 and am trying to convert a TimeSpan to a string and format the string. I would like to use

myString = myTimeSpan.ToString("c");

however the TimeSpan.ToString method does not take a format string as an argument until .NET 4.0 and I am using .NET 3.5.

How then would you format a TimeSpan as a string? My final goal is to display the TimeSpan in format hh:mm:ss but am currently receiving hh:mm:ss:fffffff.

I have tried using

myString = string.Format("{0:hh:mm:ss}", myTimeSpan);

but string.Format is only formatting my DateTime and passing different format strings doesn't work when trying to format a TimeSpan.

Was it helpful?

Solution

One way could be:

TimeSpan ts = DateTime.Now - DateTime.Now.AddHours(-10);
Console.WriteLine(string.Format("{0:00}:{1:00}:{2:00}", ts.TotalHours, ts.Minutes, ts.Seconds));

Result would be something like:

09:59:59

EDIT:

Or you can try:

TimeSpan ts = DateTime.Now - DateTime.Now.AddHours(-10);
DateTime mydate = new DateTime(ts.Ticks);
Console.WriteLine(mydate.ToString(("hh:mm:ss")));

Output would be:

09:59:59

OTHER TIPS

Better is 24*ts.Days+ts.Hours than ts.TotalHours. Compare:

var ts = TimeSpan.FromHours( 23.9 );
Console.WriteLine( ts );
Console.WriteLine( "{0:00}:{1:00}:{2:00}", ts.TotalHours, ts.Minutes, ts.Seconds );
Console.WriteLine( "{0}:{1:00}:{2:00}", ts.TotalHours, ts.Minutes, ts.Seconds );
Console.WriteLine( "{0}:{1:00}:{2:00}", 24*ts.Days+ts.Hours, ts.Minutes, ts.Seconds );
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top