Powershell mengurai string durasi menjadi detik

Saya memiliki string seperti ini: "00:02:37.6940000". Apakah ada cara mudah untuk mengubah/menguraikannya menjadi detik? Apakah saya harus mengatur ulang menjadi beberapa bagian dan melakukannya seperti itu?

Saya tidak peduli dengan milidetik.


person user1612851    schedule 16.04.2013    source sumber


Jawaban (2)


Parse adalah metode default dari tipe [TimeSpan], jadi:

([timespan]"00:02:37.6940000").TotalSeconds

harus bekerja juga.

Dengan perangkap kesalahan:

$input_ts = "00:02:37.6940000" 

if ($input_ts -as [TimeSpan])
  {$time = ([TimeSpan]$input_ts).TotalSeconds}

else {Write-Warning "Input value $input_ts not valid for timespan"}
person mjolinor    schedule 16.04.2013
comment
Terima kasih. Bekerja dengan sempurna. - person user1612851; 16.04.2013
comment
Apakah ada cara untuk menangkap yang buruk dan tidak meledakkannya? Seperti jika stringnya abc123 atau null atau apalah. - person user1612851; 16.04.2013
comment
Skrip yang diposting diperbarui dengan opsi untuk menjebak kesalahan. Anda juga bisa menggunakan coba/tangkap, tapi menurut saya itu mungkin berlebihan. - person mjolinor; 16.04.2013
comment
Alternatif lain adalah dengan menggunakan [TimeSpan]::TryParse(). - person Nate Hekman; 16.04.2013

Ini adalah format objek rentang waktu yang dapat Anda gunakan

[Timespan]::Parse("00:02:37.6940000")
person rerun    schedule 16.04.2013