Reformat value from Milliseconds to Hours:Minutes;Seconds in Select-Object?

Hi,

I am using the following Select-Object statement and I would like to re-format the $_.duration value from milliseconds to hours:minutes:seconds?

I have found the following gets me close; but it has the remaining milliseconds at the end of the string.

Select-Object @{N=‘Title’; E={$.title}}, @{N=“Duration H:M:S”; E={[timespan]::frommilliseconds($.duration).ToString()}},@{N=“Track ID”; E={$_.id}}`

As an example, if $_.duration = “3215882” (so 53 Minutes, 35 seconds) it returns 00:53:35.8820000

How do I remove/mask the remaining milliseconds?

I would be grateful if someone could help me put this to bed; it feels so simple, but I am hitting a brick wall.

Thank you in advance.

M

 

[pre]
3215882 | Select-Object @{N=“Duration H:M:S”; E={"{0:hh}:{0:mm}:{0:ss}" -f [timespan]::frommilliseconds($_)}}

Duration H:M:S

00:53:35

[/pre]

Thank you so much Aapeli.

M

For future folks looking at this post, you can also just use tostring() to format it.

$objects = @(
  [pscustomobject]@{
    title = "T1"
    duration = 3215882
    id = 123
  },
  [pscustomobject]@{
    title = "T2"
    duration = 3245643
    id = 456
  }
)

$objects |
Select-Object @{N='Title'; E={$_.title}}, @{N="Duration H:M:S"; E={[timespan]::frommilliseconds($_.duration).tostring("hh\:mm\:ss")}},@{N="Track ID"; E={$_.id}}
Title Duration H:M:S Track ID
----- -------------- --------
T1    00:53:35       123
T2    00:54:05       456

 

Yes! That’s the way I would like to have done it too. I couldn’t get my head around the separator there. I was missing the \ escape.

Thanks for this!

Thank you too Curtis.

M