2012-07-20 10 views
15

Jestem kompilacji w języku C# przy użyciu .NET 3.5 i próbuję przekonwertować TimeSpan na ciąg znaków i sformatować ciąg znaków. Chciałbym użyćJak sformatować TimeSpan na ciąg przed .NET 4.0

myString = myTimeSpan.ToString("c");

jednak metoda TimeSpan.ToString nie bierze ciąg formatu jako argument aż .NET 4.0 i używam .NET 3.5.

Jak sformatować TimeSpan jako ciąg znaków? Ostatecznym celem jest wyświetlenie TimeSpan w formacie hh:mm:ss, ale obecnie otrzymuję hh:mm:ss:fffffff.

Próbowałem, używając

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

ale string.Format formatuje tylko moje DateTime i przechodząc różne ciągi formatu nie działa podczas próby formatowania Okres.

+4

@John: To nie jest rozwiązanie. –

+0

Ten link może pomóc: http://stackoverflow.com/questions/840120/timespan-formatting –

+1

http://stackoverflow.com/a/574894/1028323 Odpowiedzi na twoje pytanie. – Alex

Odpowiedz

18

Jednym ze sposobów może być:

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

Wynik byłoby coś jak:

09:59:59 

EDIT:

Albo można spróbować:

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

wyjścia byłoby :

09:59:59 
+2

Prawdopodobnie chcesz użyć '' {0}: {1:00}: {2:00} "' ... – Joey

+0

@Joey, doskonały, zmodyfikowałem moją odpowiedź – Habib

0

Lepsze jest 24 * ts.Days + ts.Hours than ts.TotalHours. Porównaj:

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);