Là non è necessario convertire da hh.mm.ss
a hh.mm
. TimeSpan
viene memorizzato come un numero di tick (1 tick == 100 nanosecondi). Quello che devi fare è convertire questa rappresentazione binaria interna in una stringa leggibile dall'uomo! Questo è chiamato formattazione. Se non si specifica esplicitamente un formato, verrà utilizzato un formato predefinito. In questo caso hh.mm.ss
.
string formatted = timespan.ToString(@"hh\.mm");
Nota: Questo sovraccarico di ToString
esiste dal .NET 4.0. Non supporta i simboli di separatore segnaposto di data e ora! Pertanto è necessario includerli come valori letterali di stringa (con escape).
Il solito modo di formattazione delle stringhe sembra non funzionare per qualche strano motivo (testato con .NET 3.5). (Non fa alcuna differenza se si sfuggire il simbolo di separazione o meno):
var timespan = TimeSpan.FromSeconds(1234);
string formatted = String.Format("{0:hh.mm}", timespan); // ==> 00:20:34
Tuttavia, è possibile costruire la stringa come questo
string formatted =
String.Format("{0:00}.{1:00}", Math.Floor(timespan.TotalHours), timespan.Minutes);
o iniziare con VS2015/C# 6.0, utilizzando stringa interpolazione:
string formatted = $"{Math.Floor(timespan.TotalHours):00}.{timespan.Minutes:00}";
fonte
2012-10-01 12:38:49
Un suggerimento sarebbe dare un'occhiata a [Roslyn CTP] (http://www.microsoft.com/en-us/download/details.aspx?id=34685) che ho trovato molto utile per testare la formattazione in C# se si utilizza Visual Studio. – flindeberg