TimeSpan-String-Formatierung
Habe ich eine Zeitspanne, die ich brauche, um die Ausgabe in einem bestimmten format, wie unten dargestellt :-
TimeSpan TimeDifference = DateTime.Now - RandomDate;
Ich bin mit der Formatierung der Zeitspanne wie diese :-
string result = string.Format(@"{0:hh\:mm\:ss}", TimeDifference);
Das Ergebnis wird in etwa so Aussehen :-
"00:16:45.6184635"
Wie kann ich Runde diesen Sekunden auf 0 Nachkommastellen?
Expected Result = 00:16:46
Dank
Können Sie zeigen die erwarteten Ergebnisse?
InformationsquelleAutor Derek | 2013-01-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihr code funktioniert .NET 4, aber nicht mit 3.5, da gab es eine wichtige änderung auf 4,
TimeSpan
jetzt implementiertIFormattable
(siehe unten).Was Sie tun können, auf 3,5 oder niedriger ist, konvertieren Sie die
TimeSpan
zuDateTime
und verwendenToString
:Hier können Sie sehen, die nicht arbeiten + arbeiten version:http://ideone.com/Ak1HuD
Bearbeiten ich glaube, der Grund, warum funktioniert es manchmal und manchmal nicht, ist, dass da .NET 4.0
Zeit
implementiertIFormattable
die scheinen benutzt zu werden, von- String.Format
.Es ist seltsam, ich denke, die Frage muss kommen, mit der DateTime-Wert, der ich bin, Abzug von DateTime.Jetzt in meiner app. Wie in exaples oben, mein code funktioniert.
Bearbeitet meine Antwort, einen Weg, auf 3,5 durch die Umwandlung der
TimeSpan
zuDateTime
. Die Beispiele, die funktionieren, weil Sie einfach fügen Sie ganze Stunden, dann haben Sie keine Rundung Problem mit Bruchteilen von Sekunden.Danke Tim, das funktioniert Super.
+1 Tim, schöne Erklärung,
TimeSpan.ToString
nicht eine überlastung für string-format .Net 2.0.InformationsquelleAutor Rango
Dein code sollte funktionieren (nach entfernen der kleinere syntax-Fehler). Betrachten Sie das folgende Beispiel:
Ausgabe:
06:00:00
.Nein, Das ist in Ordnung. Danke.
Sie sind herzlich willkommen
Aber haben Sie einen Blick auf ideone: ideone.com/FMye8j ich gehe davon aus, dass es die Rahmenbedingungen abhängig mit
string.Format
.Wo ist deine Antwort Weg?
InformationsquelleAutor Habib
Funktioniert gut für mich.
Beispielsweise dieses Programm:
Ausgänge so etwas wie:
Also Rundung, wie in meinem Beispiel oben sollte es beheben .Net 3.5 auch, denke ich.
Ich denke, ja. Es ist einfach die Tatsache ignoriert, dass alles andere nicht funktioniert, dann OP (oder jemand mit einem .NET-version niedriger than4 )
InformationsquelleAutor Matthew Watson