16

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

myString = myTimeSpan.ToString("c");

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

那么你将如何将 TimeSpan 格式化为字符串?我的最终目标是以格式显示 TimeSpanhh:mm:ss但目前正在接收hh:mm:ss:fffffff.

我试过使用

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

但是 string.Format 只是格式化我的 DateTime 并且在尝试格式化 TimeSpan 时传递不同的格式字符串不起作用。

4

2 回答 2

20

一种方法可能是:

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
于 2012-07-20T12:13:25.343 回答
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 );
于 2015-02-13T11:07:45.740 回答