Tam nie trzeba konwertować z hh.mm.ss
na hh.mm
. TimeSpan
jest przechowywany jako liczba kleszczy (1 znacznik == 100 nanosekund). Co musisz zrobić, to przekonwertować tę wewnętrzną reprezentację binarną na ciąg czytelny dla człowieka! Nazywa się to formatowaniem. Jeśli nie określisz formatu, użyty zostanie format domyślny. W tym przypadku hh.mm.ss
.
string formatted = timespan.ToString(@"hh\.mm");
Uwaga: To przeciążenie ToString
istnieje od .NET 4.0. Nie obsługuje symboli separatora symboli daty i czasu! Dlatego należy je uwzględnić jako literały łańcuchowe (z uniknięciem).
Zwykły sposób formatowania łańcuchów wydaje się nie działać z jakiegoś dziwnego powodu (testowany z .NET 3.5). (To nie robi żadnej różnicy, czy uciec symbol separatora lub nie):
var timespan = TimeSpan.FromSeconds(1234);
string formatted = String.Format("{0:hh.mm}", timespan); // ==> 00:20:34
Jednak można skonstruować ciąg jak ten
string formatted =
String.Format("{0:00}.{1:00}", Math.Floor(timespan.TotalHours), timespan.Minutes);
lub wychodząc z VS2015/C# 6.0, za pomocą znaków interpolacja:
string formatted = $"{Math.Floor(timespan.TotalHours):00}.{timespan.Minutes:00}";
Koniec końcówki, warto rzucić okiem na [Roslyn CTP] (http://www.microsoft.com/en-us/download/details.aspx?id=34685), który uznałem za bardzo przydatny do testowania formatowania w języku C#, jeśli używasz programu Visual Studio. – flindeberg