Строка продолжительности анализа Powershell в секундах

У меня есть такая строка: "00:02:37.6940000". Есть ли простой способ преобразовать/разобрать это в секунды? Должен ли я регулярно выражать его на части и делать это таким образом?

Меня не интересуют миллисекунды.


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 или null или что-то в этом роде. - 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