Konvertiert Sekunden in das Format hh: mm: ss, fff in PowerShell

8

Ich habe eine Zeichenfolge, die eine Zeit in Sekunden und Millisekunden darstellt. Ich möchte es in eine Zeichenfolge im Format "hh: mm: ss, fff" konvertieren.

Meine Lösung hat immer noch den Fehler, dass Stunden unter 10 statt mit zwei statt mit einer Dezimalzahl angezeigt werden:

%Vor%

Was ist der richtige Weg, um dies zu erreichen? Ich bin sicher, dass es einen eleganteren Weg gibt mit -f und datetime.

    
nixda 18.02.2014, 00:41
quelle

3 Antworten

20

In PowerShell 4.0

%Vor%

Ausgabe: 01:56:40,679

In PowerShell 2.0

%Vor%

Ausgabe: 01:56:40,679

Und zurück in die andere Richtung ...

%Vor%

Ausgabe: 7000.679

    
andyb 18.02.2014, 02:25
quelle
6

Sie können einfach die Methode ToString für das TimeSpan-Objekt verwenden und das Format angeben, das Sie verwenden möchten. Verwenden Sie entweder eines der Standard-Zeitspannenformate oder verwenden Sie ein < a href="http://msdn.microsoft.com/en-us/library/ee372287%28v=vs.110%29.aspx"> benutzerdefiniertes Zeitspannenformat . Zum Beispiel gibt das folgende benutzerdefinierte Format die gewünschte Ausgabe:

%Vor%

Dies wird ausgegeben

%Vor%

Update: Aktualisierung, um Funktionen bereitzustellen, die in PowerShell v2 funktionieren

Die obige Lösung funktioniert in PowerShell v4, aber nicht in v2 (da die TimeSpan.ToString(string) -Methode erst in .NET Framework 4 hinzugefügt wurde).

In v2 müssen Sie die Zeichenfolge entweder manuell erstellen (wie Sie es in der Frage tun) oder eine gewöhnliche ToString() ausführen und die Zeichenfolge bearbeiten. Ich schlage das erstere vor. Hier ist eine Funktion, die dafür geeignet ist:

%Vor%

Testen Sie es mit

%Vor%

Liefert die folgende Ausgabe:

%Vor%     
Robert Westerlund 18.02.2014 16:52
quelle
0

Eine Zeilenumwandlung:

%Vor%

gibt 4106.12:04:17.8640000

zurück     
Alban 10.04.2017 12:37
quelle