Как отформатировать TimeSpan до строки до .NET 4.0
Я компилирую в С# с использованием .NET 3.5 и пытаюсь преобразовать TimeSpan в строку и форматировать строку. Я хотел бы использовать
myString = myTimeSpan.ToString("c");
однако метод TimeSpan.ToString
не принимает строку формата в качестве аргумента до .NET 4.0, и я использую .NET 3.5.
Как бы вы отформатировали TimeSpan как строку? Моя конечная цель - отобразить TimeSpan в формате hh:mm:ss
, но в настоящее время я получаю hh:mm:ss:fffffff
.
Я пробовал использовать
myString = string.Format("{0:hh:mm:ss}", myTimeSpan);
но string.Format только форматирует мой DateTime, и передача разных строк формата не работает при попытке форматирования TimeSpan.
Ответы
Ответ 1
Один из способов:
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
Ответ 2
Лучше 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 );