【问题标题】:TimeSpan will not parse some stringsTimeSpan 不会解析某些字符串
【发布时间】:2013-07-25 11:41:21
【问题描述】:

我不确定这里发生了什么,但它会接受一些时间跨度,但不接受其他时间跨度。谁能告诉我一种方法来检查这种格式 99:59:59 的有效时间跨度。

//50:30:00 is bad
//50:20:00 is good

try
{
    TimeSpan ts = new TimeSpan();
    ts = TimeSpan.Parse("50:30:00");
}
catch //(Exception ex)
{
    MessageBox.Show("bad time span");
}

【问题讨论】:

  • 50:30:00 不好,而 50:20:00 好?没有意义。
  • 我看到了,但我认为这可能是一个错误,所以我决定发布它。
  • 不是错误。这是TimeSpan类的设计。
  • 我的意思是 50:30:00 会抛出异常,而 50:20:00 不会。

标签: c# parsing timespan


【解决方案1】:

默认情况下,Timespan.Parse 方法假定时间采用Days:Hours:Minutes 格式。由于一天不能超过 24 小时,所以当 Hours 组件大于 24 时会抛出异常。

我不得不承认我有点惊讶Timespan.Parse 不会为你做转换。我有一种预感,这与并非所有日子都是 24 小时这一事实有关。

【讨论】:

  • 这并不能解释为什么它会接受 48:00:00 或 50:20:00。你能给我解释一下吗?
  • 当然可以。 48:00:00 读作“48 天 0 小时 0 分钟”(合法)。 50:20:00 读作“50 天 20 小时 0 分钟”(合法)。 50:30:00 读作“50 天 30 小时 0 分钟”(不合法)。日子不能有 30 个小时,所以它会抛出异常。
  • 啊,谢谢你,我明白它现在是如何工作的。我无法理解。
猜你喜欢
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多