Können Sie eine Runde .NET TimeSpan-Objekt?
Können Sie eine Runde .NET TimeSpan
Objekt?
Ich habe eine Timespan
Wert: 00:00:00.6193789
Gibt es eine einfache Möglichkeit, um es ein TimeSpan
Objekt, sondern um ihn zu etwas wie
00:00:00.62?
InformationsquelleAutor der Frage BuddyJoe | 2008-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sorry, Jungs, aber beide die Frage und die gängigen Antworten bisher sind falsch 🙂
Die Frage ist falsch, weil Tyndall fragt nach einem Weg, um Runde aber zeigt ein Beispiel abschneiden.
Wird Dean ' s Antwort ist falsch, weil es auch Adressen abschneiden eher als Rundung. (Ich nehme an, man argumentieren könnte, die Antwort ist richtig, wenn eine der beiden Fragen, aber lassen wir die Philosophie beiseite für den moment...)
Hier ist eine einfache Technik für Rundung:
Mit dem input-Wert und die Anzahl der Ziffern im Beispiel-code, das ist die Ausgabe:
Ändern Sie die Genauigkeit von 2 Ziffern 5 Ziffern und erhalten dadurch statt:
Und sogar ändern Sie ihn auf 0 zu bekommen dieses Ergebnis:
Schließlich, wenn Sie wollen einfach nur ein bisschen mehr Kontrolle über die Ausgabe, fügen Sie einige Formatierungen. Hier ist ein Beispiel, die zeigen, dass Sie getrennt werden können, die Genauigkeit von der Anzahl der angezeigten Ziffern. Die Präzision ist wieder auf 2 gesetzt, aber 3 Ziffern angezeigt werden, wie in dem letzten argument der Steuerung der Formatierung string:
2010.01.06 UPDATE: Eine Out-of-the-box-Lösung
Den oben genannten Materialien ist nützlich, wenn Sie sind auf der Suche nach Ideen; ich habe da mal umsetzen eine Pauschale Lösung für diejenigen, die ready-to-use code.
Beachten Sie, dass dies unkommentiert code. Die vollständig kommentierte version mit XML-doc-Kommentare werden in meinem open-source-Bibliothek Ende des Quartals. Aber ich zögerte, um es zu veröffentlichen "raw" wie diese, ich vermute, dass es noch von einigen nutzen für Interessierte Leser.
Dieser code verbessert auf meine obigen code, die, wenn es abgerundete, noch zeigte 7 Nachkommastellen, aufgefüllt mit Nullen. Diese fertigen version Runden und trimmt, um die angegebene Anzahl von stellen.
Hier ist ein Beispiel-Aufruf:
Und hier ist die komplette RoundedTimeSpan.cs-Datei:
2010.02.01 UPDATE: Pauschale Lösung jetzt erhältlich
Ich soeben eine neue version meiner open-source-Bibliotheken gestern, früher als erwartet, einschließlich der RoundedTimeSpan die ich oben beschrieben habe. Code ist hier; für die API starten hier navigieren Sie dann zu
RoundedTimeSpan
unter derCleanCode.Data
namespace. Die CleanCode.DLL die Bibliothek enthält den code oben aber sieht es in einem fertigen Paket. Beachten Sie, dass ich eine leichte Verbesserung in derToString(int)
Methode vor, seit ich gepostet es auf 2010.01.06.InformationsquelleAutor der Antwort Michael Sorens
Zeitspanne ist wenig mehr als ein wrapper für den 'Zecken' - Mitglied. Es ist ziemlich einfach, um eine neue Zeitspanne von einer abgerundeten version von einer anderen Zeitspanne, die Zecken.
Gibt:
InformationsquelleAutor der Antwort Will Dean
Wenn Sie möchten, eine Zeitspanne, eine einfache one-liner:
Wenn Sie möchten, eine Zeichenfolge:
Credits:
cc1960 Antwort zeigt die Verwendung von
FromSeconds
aber er gerundet auf ganze Sekunden. Meine Antwort verallgemeinert um die angegebene Anzahl von stellen.Ed ' s Antwort schlägt mit einem format-string und enthält den link zur Formatierung Dokument.
InformationsquelleAutor der Antwort ToolmakerSteve
InformationsquelleAutor der Antwort mapache
Gegeben, einige der Kommentare, die über Runden Sekunden, dachte ich, Rundung, jede Zeitspanne wäre nett:
InformationsquelleAutor der Antwort NetMage
Nicht sicher über die Zeitspanne, aber Sie könnten überprüfen Sie in diesem Beitrag DateTimes:
http://mikeinmadison.wordpress.com/2008/03/12/datetimeround/
InformationsquelleAutor der Antwort Joel Coehoorn
Hier ist eine schöne Erweiterung-Methode:
Und hier sind einige Beispiele:
InformationsquelleAutor der Antwort Gewalius
Noch ein anderer Weg Runde Millisekunden auf die nächste Sekunde.
InformationsquelleAutor der Antwort Buzz
Meine Lösung:
InformationsquelleAutor der Antwort cc1960
Erweiterung Methode, wenn Sie brauchen, um die Arbeit mit
DateTime
statt, aber immer noch wollen, um Runde Zeit. In meinem Fall wollte ich Runde auf die minute.InformationsquelleAutor der Antwort Math M.