【发布时间】:2019-04-29 21:40:19
【问题描述】:
在解析 HH 大于 24 的 HH:MM:SS 格式的字符串时,这似乎会错误地解析时间跨度:
[MultiTenant\Exchange\] PS C:\Users\vijara> [System.TimeSpan]::Parse("24:00:00")
Days : 24
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 0
Ticks : 20736000000000
TotalDays : 24
TotalHours : 576
TotalMinutes : 34560
TotalSeconds : 2073600
TotalMilliseconds : 2073600000
任何高于 23 的 HH 值都是这种情况。
[MultiTenant\Exchange\] PS C:\Users\vijara> [System.TimeSpan]::Parse("45:00:00")
Days : 45
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 0
Ticks : 38880000000000
TotalDays : 45
TotalHours : 1080
TotalMinutes : 64800
TotalSeconds : 3888000
TotalMilliseconds : 3888000000
【问题讨论】:
-
解释在文档中是正确的:docs.microsoft.com/en-us/dotnet/api/…
-
你有什么问题?它正在做指定要做的事情。
-
考虑使用
ParseExact并指定格式字符串。 -
我相信您希望
[System.TimeSpan]::Parse("1.0:00:00")获得 24 小时的时间跨度,[System.TimeSpan]::Parse("1.21:00:00")获得 45 小时的 powershell 格式。 -
谢谢,我想知道为什么这不会导致溢出。但我猜它会丢弃第二个并将第一个文字解析为天数,因为它大于一天中的小时数