2013-03-10 19 views
5
TimeSpan Ts = new TimeSpan(5, 4, 3, 2); 
return Ts.ToString("?"); 

Quale espressione devo sostituire con un punto interrogativo per ottenere questo formato: 5d: 4h: 3m: 2s?TimeSpan.ToString() stringa di ritorno come (d: hh: mm: ss)

+0

è possibile eseguire questo utilizzando il codice e la formattazione 'TimeSpan Ts = new TimeSpan (5, 4, 3, 2); var RetValue = string.Format ("{0} d: {1} h: {2} m: {3} s", Ts.Days, Ts.Hours, Ts.Milliseconds, Ts.Seconds); ' – MethodMan

risposta

11
TimeSpan timeSpan = new TimeSpan(5, 4, 3, 2); 
string str = timeSpan.ToString(@"d\d\:h\h\:m\m\:s\s", System.Globalization.CultureInfo.InvariantCulture); 

Vedi Custom TimeSpan Format Strings su come formattare TimeSpan s.

Sebbene si noti che gli TimeSpan negativi non possono essere distinti da quelli positivi. Appaiono come se fossero stati negated. Pertanto, -new TimeSpan(5,4,3,2) verrà visualizzato come 5d:4h:3m:2s. Se si desidera visualizzare numeri negativi, è necessario formattare i propri numeri tramite le proprietà di TimeSpan.

+0

Là non è necessario sfuggire a tutti i caratteri della stringa di formato. Scappare \. e \: è abbastanza. –

+0

Mosh voleva che le parti fossero suffragate con la sua parte corrispondente, quindi per il suo caso era necessario. Se vuoi solo '12: 34: 45', non è necessario eseguire l'escape. – Caramiriel

+0

Hai ragione. Scusate. Non ho letto la domanda alla fine. –

2

È possibile effettuare questa operazione utilizzando il codice corrente

TimeSpan Ts = new TimeSpan(5, 4, 3, 2); 
var RetValue = string.Format("{0}d:{1}h:{2}m:{3}s", 
    Ts.Days, 
    Ts.Hours, 
    Ts.Minutes, 
    Ts.Seconds); 

cede questo come un risultato formattato "5d:4h:0m:2s"

Problemi correlati