将字符串转换为时间跨度
Converting string to timespan
我是 Powershell 的新手,我一直在尝试将此字符串转换为时间跨度对象:
“2 天 1 小时 15 分钟”
我尝试了几种使用 parseexact 输入格式的方法,但我似乎无法找到正确的格式。
我试过这样的事情:
[TimeSpan]::ParseExact('2 Days 1 Hour 15 Minutes', 'd \Days h \Hour MM \Minutes', $null)
TimeSpan 解析器非常敏感,您需要转义不是格式字符串说明符的所有内容:
[TimeSpan]::ParseExact('2 Days 1 Hour 15 Minutes', '%d\ \D\a\y\s\ %h\ \H\o\u\r\ %m\ \M\i\n\u\t\e\s', $null)
(我对说明符使用百分号表示法(%d
而不是 d
)使它们在所有 \
中脱颖而出,但它们'不需要)
很高兴看到你有答案。另一种方法是在正则表达式中使用命名捕获。
PS C:\> '2 Days 1 Hour 15 Minutes' -match '^(?<Days>\d+)\D*(?<Hours>\d+)\D*(?<Minutes>\d+)\D*'
True
PS C:\> $matches
Name Value
---- -----
Hours 1
Minutes 15
Days 2
0 2 Days 1 Hour 15 Minutes
PS C:\> $Matches.Days
2
PS C:\> $Matches.Hours
1
PS C:\> $Matches.Minutes
15
PS C:\> $Ts = New-TimeSpan -days $Matches.Days -Hours $Matches.Hours -Minutes $Matches.Minutes
PS C:\> $Ts
Days : 2
Hours : 1
Minutes : 15
Seconds : 0
Milliseconds : 0
Ticks : 1773000000000
TotalDays : 2.05208333333333
TotalHours : 49.25
TotalMinutes : 2955
TotalSeconds : 177300
TotalMilliseconds : 177300000
字符串版本通常如下所示:'2.01:15:00'
,因此 [timespan]'2.01:15'
有效。
我是 Powershell 的新手,我一直在尝试将此字符串转换为时间跨度对象:
“2 天 1 小时 15 分钟”
我尝试了几种使用 parseexact 输入格式的方法,但我似乎无法找到正确的格式。
我试过这样的事情:
[TimeSpan]::ParseExact('2 Days 1 Hour 15 Minutes', 'd \Days h \Hour MM \Minutes', $null)
TimeSpan 解析器非常敏感,您需要转义不是格式字符串说明符的所有内容:
[TimeSpan]::ParseExact('2 Days 1 Hour 15 Minutes', '%d\ \D\a\y\s\ %h\ \H\o\u\r\ %m\ \M\i\n\u\t\e\s', $null)
(我对说明符使用百分号表示法(%d
而不是 d
)使它们在所有 \
中脱颖而出,但它们'不需要)
很高兴看到你有答案。另一种方法是在正则表达式中使用命名捕获。
PS C:\> '2 Days 1 Hour 15 Minutes' -match '^(?<Days>\d+)\D*(?<Hours>\d+)\D*(?<Minutes>\d+)\D*'
True
PS C:\> $matches
Name Value
---- -----
Hours 1
Minutes 15
Days 2
0 2 Days 1 Hour 15 Minutes
PS C:\> $Matches.Days
2
PS C:\> $Matches.Hours
1
PS C:\> $Matches.Minutes
15
PS C:\> $Ts = New-TimeSpan -days $Matches.Days -Hours $Matches.Hours -Minutes $Matches.Minutes
PS C:\> $Ts
Days : 2
Hours : 1
Minutes : 15
Seconds : 0
Milliseconds : 0
Ticks : 1773000000000
TotalDays : 2.05208333333333
TotalHours : 49.25
TotalMinutes : 2955
TotalSeconds : 177300
TotalMilliseconds : 177300000
字符串版本通常如下所示:'2.01:15:00'
,因此 [timespan]'2.01:15'
有效。