【问题标题】:System.TimeSpan.Parse parsing incorrectly for HH:MM:SS where HH >= 24System.TimeSpan.Parse 对 HH:MM:SS 的解析不正确,其中 HH >= 24
【发布时间】: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 格式。
  • 谢谢,我想知道为什么这不会导致溢出。但我猜它会丢弃第二个并将第一个文字解析为天数,因为它大于一天中的小时数

标签: c# .net timespan


【解决方案1】:

因为一天不能超过 24 小时。一旦解析方法看到大于 24 的数字,它就会假定您需要天数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 2020-10-24
    相关资源
    最近更新 更多