How to format TimeSpan to string before .NET 4.0

Ishkur picture Ishkur · Jul 20, 2012 · Viewed 8.5k times · Source

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.

Answer

Habib picture Habib · Jul 20, 2012

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