C# 如何将TimeSpan格式设置为.NET 4.0之前的字符串

C# 如何将TimeSpan格式设置为.NET 4.0之前的字符串,c#,.net-3.5,tostring,timespan,string.format,C#,.net 3.5,Tostring,Timespan,String.format,我正在使用.NET3.5进行C#编译,并试图将TimeSpan转换为字符串并格式化字符串。我想用 myString=myTimeSpan.ToString(“c”) 但是,TimeSpan.ToString方法直到.NET 4.0和我使用的.NET 3.5才将格式字符串作为参数 那么,如何将TimeSpan格式化为字符串?我的最终目标是以hh:mm:ss格式显示时间跨度,但我当前正在接收hh:mm:ss:fffffff 我试过使用 myString=string.Format(“{0:hh:mm

我正在使用.NET3.5进行C#编译,并试图将TimeSpan转换为字符串并格式化字符串。我想用

myString=myTimeSpan.ToString(“c”)

但是,
TimeSpan.ToString
方法直到.NET 4.0和我使用的.NET 3.5才将格式字符串作为参数

那么,如何将TimeSpan格式化为字符串?我的最终目标是以
hh:mm:ss
格式显示时间跨度,但我当前正在接收
hh:mm:ss:fffffff

我试过使用

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

但是string.Format只是格式化我的日期时间,当试图格式化时间跨度时,传递不同格式的字符串不起作用。

一种方法可能是:

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

09:59:59
编辑:

或者您可以尝试:

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

09:59:59

24*ts.Days+ts.Hours比ts.TotalHours更好。 比较:


@约翰:这不是解决办法。这个链接可能会帮助你:回答你的问题。@Joey,完美,修改了我的答案
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 );