TimeSpan不会解析一些字符串

Rik*_*i B -1 c# parsing timespan

我不确定这里发生了什么,但它会接受一些时间跨度,但不会接受其他时间跨度.有人能告诉我一种检查这种格式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");
}
Run Code Online (Sandbox Code Playgroud)

Jas*_*ins 6

默认情况下,该Timespan.Parse方法假定时间是格式的int Days:Hours:Minutes.由于一天的时间不能超过24小时,因此当Hours组件大于24 时,它会抛出.

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

  • 当然可以."48:00:00"被读作"48天,0小时,0分钟"(合法)."50:20:00"被读作"50天,20小时,0分钟"(合法).`50:30:00`读作"50天,30小时,0分钟"(不合法).天不能有30个小时,所以它抛出异常. (3认同)