2012-07-20 19 views
15

Sto compilando in C# utilizzando .NET 3.5 e sto cercando di convertire un TimeSpan in una stringa e formattare la stringa. Vorrei utilizzareCome formattare TimeSpan per la stringa prima di .NET 4.0

myString = myTimeSpan.ToString("c");

tuttavia il metodo TimeSpan.ToString non prende una stringa di formato come un argomento fino NET 4.0 e sto usando .NET 3.5.

Come è possibile formattare un TimeSpan come stringa? Il mio obiettivo finale è visualizzare TimeSpan nel formato hh:mm:ss ma sto attualmente ricevendo hh:mm:ss:fffffff.

Ho provato con

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

ma string.Format è formattare solo la mia DateTime e passando diverse stringhe di formato non funziona quando si tenta di formattare un periodo.

+4

@John: Questa non è una soluzione. –

+0

Questo link può aiutarti: http://stackoverflow.com/questions/840120/timespan-formatting –

+1

http://stackoverflow.com/a/574894/1028323 Rispondi alla tua domanda. – Alex

risposta

18

Un modo potrebbe essere:

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

Risultato sarebbe qualcosa di simile:

09:59:59 

EDIT:

Oppure si può provare:

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

uscita sarebbe :

09:59:59 
+2

Probabilmente vorrai usare "" {0}: {1:00}: {2:00} "' ... – Joey

+0

@ Joey, perfetto, modificato la mia risposta – Habib

0

Migliore è 24 * ts.Days + ts.Hours than ts.TotalHours. Confronta:

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