如何在.NET 4.0之前将TimeSpan格式化为字符串

17

我正在使用.NET 3.5编译C#代码,尝试将TimeSpan转换为字符串并进行格式化。我想使用

myString = myTimeSpan.ToString("c");

但是TimeSpan.ToString方法在.NET 4.0之前不接受格式字符串作为参数,而我正在使用.NET 3.5。

那么,如何将TimeSpan格式化为字符串呢?我的最终目标是以格式hh:mm:ss显示TimeSpan,但我当前收到的是hh:mm:ss:fffffff

我尝试过使用

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

但是string.Format仅格式化我的DateTime,尝试传递不同的格式字符串时无法格式化TimeSpan。


4
@John:那不是一个解决方案。 - Nikhil Agrawal
这个链接可能会对你有所帮助:https://dev59.com/y3RA5IYBdhLWcg3wwwvD - Mamta D
1
回答了你的问题。 - Alex
2个回答

23

一种方法可能是:

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

@Joey,完美,修改了我的答案。 - Habib

0
较好的选择是 24 * ts.Days + ts.Hours 而不是 ts.TotalHours。比较:
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 );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接