如何将表示时间跨度的自定义字符串转换为另一种格式?

How to convert a custom string representing a timespan into another format?

我正在尝试创建一个函数来转换表示时间跨度的字符串(格式:aMbb.cccS,其中 a:分钟,bb:秒,ccc:milliseconds) 转换为另一种格式 (hh:mm:ss.fff)。到现在为止,我只得到一个时间跨度对象。

示例输入:2M37.526S

预期输出:00:02:37.526

我的函数:

function Convert-TimeString ([String]$Time, [String[]]$Format)
{
    $result = New-Object TimeSpan

    $convertible = [TimeSpan]::TryParseExact(
        $Time,
        $Format,
        [System.Globalization.CultureInfo]::InvariantCulture,
        [ref]$result
    )

    if ($convertible) { $result }
}

只需根据您的需要在您的 $result 上调用 ToString()

function Convert-TimeString ([String]$Time, [String[]]$Format)
{
  $result = New-Object TimeSpan

  $convertible = [TimeSpan]::TryParseExact(
  $Time,
  $Format,
  [System.Globalization.CultureInfo]::InvariantCulture,
  [ref]$result)

  if ($convertible) { $result.ToString('hh\:mm\:ss\.fff') }
}

Convert-TimeString -Time '2M37.526S' -Format 'm\Mss\.fff\S'

输出:

00:02:37.526