Powershell แยกสตริงระยะเวลาเป็นวินาที

ฉันมีสตริงเช่นนี้: "00:02:37.6940000" มีวิธีง่าย ๆ ในการแปลง / แยกวิเคราะห์เป็นวินาทีหรือไม่? ฉันต้อง regex เป็นชิ้น ๆ แล้วทำอย่างนั้นหรือไม่?

ฉันไม่สนใจเกี่ยวกับมิลลิวินาที


person user1612851    schedule 16.04.2013    source แหล่งที่มา


คำตอบ (2)


Parse เป็นวิธีการเริ่มต้นของประเภท [TimeSpan] ดังนั้น:

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

ควรจะทำงานเช่นกัน

ด้วยการดักจับข้อผิดพลาด:

$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
ขอบคุณ. ทำงานได้อย่างสมบูรณ์แบบ - person user1612851; 16.04.2013
comment
มีวิธีจับตัวร้ายแล้วไม่ให้ระเบิดมั้ย? เช่นว่าสตริงนั้นเป็น abc123 หรือเป็นโมฆะหรืออะไรสักอย่าง - person user1612851; 16.04.2013
comment
อัปเดตสคริปต์ที่โพสต์พร้อมตัวเลือกสำหรับการตรวจจับข้อผิดพลาด คุณสามารถใช้ try/catch ได้ แต่ฉันคิดว่านั่นอาจจะเกินกำลังไป - person mjolinor; 16.04.2013
comment
อีกทางเลือกหนึ่งคือใช้ [TimeSpan]::TryParse() - person Nate Hekman; 16.04.2013

นี่คือรูปแบบของออบเจ็กต์ช่วงเวลาที่คุณสามารถใช้ได้

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