Für .Net <= 4.0 Verwenden Sie die TimeSpan-Klasse.
TimeSpan t = TimeSpan.FromSeconds( secs );
string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms",
t.Hours,
t.Minutes,
t.Seconds,
t.Milliseconds);
(Wie von Inder Kumar Rathore angegeben) Für .NET> 4.0 können Sie verwenden
TimeSpan time = TimeSpan.FromSeconds(seconds);
//here backslash is must to tell that colon is
//not the part of format, it just a character that we want in output
string str = time .ToString(@"hh\:mm\:ss\:fff");
(Von Nick Molyneux) Stellen Sie sicher, dass die Sekunden kürzer sind TimeSpan.MaxValue.TotalSeconds
, um eine Ausnahme zu vermeiden.
using System;
Die Klasse befindet sich inSystem.TimeSpan
.Für .NET> 4.0 können Sie verwenden
Wenn Sie ein Datums- / Uhrzeitformat wünschen, können Sie dies auch tun
Weitere Informationen finden Sie unter Benutzerdefinierte TimeSpan-Formatzeichenfolgen
quelle
HH
ist dort ungültig..NET/C#
.ToString(@"hh\:mm\:ss\:fff");
ist bereits im24hr
Format.HH
ist dort mit einer solchen Eingabe nicht gültig ( der Fehler istInput string was not in a correct format.
)Wenn Sie wissen, dass Sie einige Sekunden Zeit haben, können Sie einen TimeSpan-Wert erstellen, indem Sie TimeSpan.FromSeconds aufrufen:
Sie können dann die Anzahl der Tage, Stunden, Minuten oder Sekunden ermitteln. Oder verwenden Sie eine der ToString-Überladungen, um sie auf eine beliebige Weise auszugeben.
quelle
Ich habe einige Benchmarks durchgeführt, um herauszufinden, was der schnellste Weg ist. Dies sind meine Ergebnisse und Schlussfolgerungen. Ich habe jede Methode 10 Millionen Mal ausgeführt und einen Kommentar mit der durchschnittlichen Zeit pro Lauf hinzugefügt.
Wenn Ihre Eingabe-Millisekunden nicht auf einen Tag beschränkt sind (Ihr Ergebnis kann 143: 59: 59.999 sein), sind dies die Optionen, von schneller bis langsamer:
Wenn Ihre eingegebenen Millisekunden auf einen Tag begrenzt sind (Ihr Ergebnis wird niemals größer als 23: 59: 59.999 sein), sind dies die Optionen, von schneller bis langsamer:
Wenn Ihre Eingabe nur Sekunden dauert , sind die Methoden etwas schneller. Auch hier gilt: Wenn Ihre Eingabesekunden nicht auf einen Tag beschränkt sind (Ihr Ergebnis kann 143: 59: 59 sein):
Und wenn Ihre Eingabesekunden auf einen Tag begrenzt sind (Ihr Ergebnis wird niemals größer als 23:59:59 sein):
Lassen Sie mich abschließend hinzufügen, dass mir aufgefallen ist, dass dies
string.Format
etwas schneller ist, wenn SieD2
stattdessen verwenden00
.quelle
http://msdn.microsoft.com/en-us/library/system.timespan.fromseconds.aspx
quelle
Mit dem TimeSpan-Konstruktor können Sie in Sekunden übergeben. Deklarieren Sie einfach eine Variable vom Typ TimeSpan in Sekunden. Ex:
quelle
Ich würde vorschlagen, dass Sie die
TimeSpan
Klasse dafür verwenden.Ausgänge:
quelle
In VB.NET, aber in C # ist es dasselbe:
quelle
Für .NET <4.0 (z. B. Unity ) können Sie eine Erweiterungsmethode schreiben, die das
TimeSpan.ToString(string format)
Verhalten von .NET> 4.0 aufweistUnd von überall in Ihrem Code können Sie es wie folgt verwenden:
Auf diese Weise können Sie jedes
TimeSpan
Objekt formatieren, indem Sie einfach ToString von einer beliebigen Stelle Ihres Codes aus aufrufen.quelle
Warum brauchen Leute TimeSpan UND DateTime, wenn wir DateTime.AddSeconds () haben?
Das Datum ist beliebig. totalSeconds kann größer als 59 sein und ist ein Double. Anschließend können Sie Ihre Zeit mit DateTime.ToString () beliebig formatieren:
Dies funktioniert nicht, wenn totalSeconds <0 oder> 59:
quelle
//Prüfung
quelle
um Gesamtsekunden zu erhalten
und um datetime von Sekunden zu erhalten
quelle
Dies wird im Format hh: mm: ss zurückgegeben
quelle
ConvertTime(80)
Rückgaben0:1:20
undConvertTime(61)
Rückgaben0:1:1
, die beide sindh:m:s
. Die Verwendung der Zeichenfolgeninterpolation führt auch zu einem längeren Code alsToString()
in anderen Antworten und erschwert die Visualisierung der formatierten Zeichenfolgenlänge.