如何用PowerShell将"PT5H"转换为ticks?转换报错求助
解决"PT5H"转TimeSpan并获取Ticks的问题
PowerShell默认的[TimeSpan]::Parse()不支持ISO 8601标准的持续时间格式(如"PT5H"),所以会抛出转换错误。可以用以下两种方法解决:
方法一:使用XmlConvert解析通用ISO 8601格式
这种方法能兼容多种ISO 8601时间间隔格式(比如PT1H30M、P2DT4H等):
# 解析ISO 8601时间字符串为TimeSpan对象 $timeSpan = [System.Xml.XmlConvert]::ToTimeSpan("PT5H") # 获取对应的Ticks值 $ticks = $timeSpan.Ticks # 输出结果 $ticks
方法二:使用TimeSpan.ParseExact匹配固定格式
如果你的时间字符串格式固定为"PTnH"这种形式,可以指定精确格式解析:
# 定义匹配"PTnH"格式的模板 $format = "PT\HH" # 解析字符串为TimeSpan对象 $timeSpan = [TimeSpan]::ParseExact("PT5H", $format, $null) # 获取对应的Ticks值 $ticks = $timeSpan.Ticks # 输出结果 $ticks
运行任意一种方法后,都会得到"PT5H"对应的Ticks值:180000000000(5小时 × 3600秒/小时 × 10000000Ticks/秒)。
内容的提问来源于stack exchange,提问作者dev333
相关产品推荐
相关产品推荐

