以下代码给出了错误,如上标题所示:
TimeSpan my_hours = new TimeSpan();
my_hours = TimeSpan.Parse("00:00");
my_hours += TimeSpan.Parse("25:07"); //this line throws error
在最后一行之前,my_hours的值是4.01:33:00。如何解决此错误?
基本上这个代码在for循环中运行,值“25:07”不断变化,它会在my_hours中添加并继续执行,直到它尝试添加此值“25:07”,当my_hours的当前值为4.01:33:00并抛出错误。
答案 0 :(得分:2)
将第三行更改为my_hours += TimeSpan.Parse("00:25:07")
您可以阅读TimeSpan.Parse()
on MSDN的预期格式:
s参数包含以下形式的时间间隔规范:
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
所以最低要求是hh:mm
。当您输入25:07
时,它被解释为25小时7分钟,这是非法值(因为小时需要在0-23之间)。
在前面添加00:
会将其更改为0小时25分7秒,现在是解析的合法值。
答案 1 :(得分:2)
如果您想使用超过24小时,则必须使用其他格式。 Parse
接受的格式记录在案
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
所以你必须指定1.01:07
1天,1小时7分钟。
答案 2 :(得分:1)
根据TimeSpan.Parse文档,预期字符串的格式为
[ws] [ - ] {d | [d。] hh:mm [:ss [.ff]]} [ws]
其中hh是小时,范围从0到23.因此,字符串25:07
被视为hh:mm
字符串,小时值为25.这会给你OverflowException。
如果您想添加25小时,则应添加1天1小时1:01:07
。如果那应该是25分钟,那么使用格式为秒00:25:07