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

PowerShell中如何将指定格式字符串转换为TimeSpan对象

PowerShell时间字符串转TimeSpan对象正确实现

你原来的代码存在三个核心错误:

  • 使用MM作为分钟格式符:该符号属于DateTime类型的月份格式符,TimeSpan的分钟格式符为小写m
  • 字面量转义逻辑错误:仅用\转义只能生效单个字符,\Days仅转义了首字母D,后续的ays会被误识别为格式符导致匹配失败
  • 单字符格式符未加%前缀:单独使用d、h、m这类单字符TimeSpan格式符时,必须加%前缀明确标识为单字符格式,否则会被解析为多字符格式符

适配当前输入的写法

针对你给出的2 Days 1 Hour 15 Minutes格式,直接使用以下代码即可完成转换:

[TimeSpan]::ParseExact('2 Days 1 Hour 15 Minutes', "%d' Days '%h' Hour '%m' Minutes", $null)

兼容单复数场景的写法

如果你的输入可能出现1 Day、1 Minute这类单数表述,可以传入多格式数组兼容不同情况:

# 定义所有可能匹配的格式
$timeFormats = @(
    "%d' Days '%h' Hours '%m' Minutes",
    "%d' Days '%h' Hour '%m' Minutes",
    "%d' Day '%h' Hours '%m' Minutes",
    "%d' Day '%h' Hour '%m' Minutes",
    "%d' Days '%h' Hour '%m' Minute",
    "%d' Day '%h' Hour '%m' Minute"
)
# 转换时自动匹配对应格式
[TimeSpan]::ParseExact('1 Day 1 Hour 2 Minute', $timeFormats, $null)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:54:04