I have a string representing a time in seconds and milliseconds. I want to convert it to a string in the format "hh:mm:ss,fff".
My solution still has the flaw that hours less than 10 are shown with one decimal instead of two:
PS> $secs = "7000.6789"
PS> $ts = [timespan]::fromseconds($s)
PS> $res = "$($ts.hours):$($ts.minutes):$($ts.seconds),$($ts.milliseconds)"
PS> $res
PS> 1:56:40,679
What is the right way to achieve this? I'm sure there is a more elegant way with -f
and datetime.
In PowerShell 4.0
$s = "7000.6789"
$ts = [timespan]::fromseconds($s)
("{0:hh\:mm\:ss\,fff}" -f $ts)
Output: 01:56:40,679
In PowerShell 2.0
$s = "7000.6789"
$ts = [timespan]::fromseconds($s)
"{0:hh:mm:ss,fff}" -f ([datetime]$ts.Ticks)
Output: 01:56:40,679
And to go back the other way...
$text = "01:56:40,679"
$textReformat = $text -replace ",","."
$seconds = ([TimeSpan]::Parse($textReformat)).TotalSeconds
$seconds
Output: 7000.679