You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中Stopwatch.Elapsed格式化输出DD:HH:MM:SS报错问题

解决PowerShell中Stopwatch Elapsed时间格式化重载错误问题

问题原因

$elapsed是TimeSpan类型,它的ToString()方法支持的自定义格式规则和DateTime不同,你使用的DD:HH:MM:SS是DateTime专属的格式语法,TimeSpan无法识别,因此触发重载错误。

解决方案

以下两种方法可以输出你需要的两位数字天、时、分、秒格式(DD:HH:MM:SS):

方法1:使用TimeSpan原生格式字符串

直接使用TimeSpan支持的格式说明符,用单引号包裹格式字符串避免PowerShell转义问题:

$timer = [System.Diagnostics.Stopwatch]::StartNew()
Start-Sleep -Second 83
$timer.Stop()
$elapsed = $timer.Elapsed
# 两种写法效果一致
Write-Host $elapsed.ToString('dd:HH:mm:ss')
# 或者显式转义冒号(双引号场景下可用)
Write-Host $elapsed.ToString("dd`:`HH`:`mm`:`ss")

格式说明:

  • dd:两位数字天数(不足补0)
  • HH:两位数字24小时制小时数
  • mm:两位数字分钟数
  • ss:两位数字秒数

方法2:借助DateTime格式化

将TimeSpan叠加到一个基准日期(如公元1年1月1日)上,再用熟悉的DateTime格式语法输出:

$timer = [System.Diagnostics.Stopwatch]::StartNew()
Start-Sleep -Second 83
$timer.Stop()
$elapsed = $timer.Elapsed
Write-Host (Get-Date "0001-01-01").Add($elapsed).ToString('dd:HH:mm:ss')

内容的提问来源于stack exchange,提问作者NewbieBAT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 09:34:57