356 Stimmen

Wie kann ich Sekunden in (Stunde:Minute:Sekunde:Millisekunde) Zeit umwandeln?

Wie kann ich Sekunden in (Stunde:Minute:Sekunde:Millisekunde) Zeit konvertieren?

Angenommen, ich habe 80 Sekunden; gibt es spezialisierte Klassen/Techniken in .NET, die es mir ermöglichen, diese 80 Sekunden in das Format (00h:00m:00s:00ms) wie Convert.ToDateTime oder etwas Ähnliches umzuwandeln?

10voto

Jim Petkus Punkte 4452

Der TimeSpan-Konstruktor ermöglicht es Ihnen, Sekunden zu übergeben. Deklarieren Sie einfach eine Variable vom Typ TimeSpan für die Anzahl der Sekunden. z.B.:

TimeSpan span = new TimeSpan(0, 0, 500);
span.ToString();

4voto

Stefan Punkte 11254

In VB.NET, aber es ist dasselbe in C#:

Dim x As New TimeSpan(0, 0, 80)
debug.print(x.ToString())
' Wird 00:01:20 ausgeben

4voto

Oliver Friedrich Punkte 8805

Ich würde empfehlen die TimeSpan Klasse dafür zu verwenden.

public static void Main(string[] args)
{
    TimeSpan t = TimeSpan.FromSeconds(80);
    Console.WriteLine(t.ToString());

    t = TimeSpan.FromSeconds(868693412);
    Console.WriteLine(t.ToString());
}

Ausgaben:

00:01:20
10054.07:43:32

4voto

Ege Aydın Punkte 941

Für .NET < 4.0 (z.B.: Unity) können Sie eine Erweiterungsmethode schreiben, um das Verhalten von TimeSpan.ToString(string format) wie in .NET > 4.0 zu haben

public static class TimeSpanExtensions
{
    public static string ToString(this TimeSpan time, string format)
    {
        DateTime dateTime = DateTime.Today.Add(time);
        return dateTime.ToString(format);
    }
}

Und überall in Ihrem Code können Sie es so verwenden:

var time = TimeSpan.FromSeconds(timeElapsed);

string formattedDate = time.ToString("hh:mm:ss:fff");

Auf diese Weise können Sie jedes TimeSpan-Objekt formatieren, indem Sie einfach ToString von überall in Ihrem Code aufrufen.

1voto

Evgeni Nabokov Punkte 2102

Warum benötigen Menschen TimeSpan UND DateTime, wenn wir DateTime.AddSeconds() haben?

var dt = new DateTime(2015, 1, 1).AddSeconds(totalSeconds);

Das Datum ist willkürlich. totalSeconds kann größer als 59 sein und ist ein Double. Dann können Sie Ihre Zeit formatieren, wie Sie möchten, indem Sie DateTime.ToString() verwenden:

dt.ToString("H:mm:ss");

Dies funktioniert nicht, wenn totalSeconds < 0 oder > 59 sind:

new DateTime(2015, 1, 1, 0, 0, totalSeconds)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X