use*_*er1 2 c# parsing timespan
TimeSpan timeTaken = TimeSpan.Parse("51:45:33");
Run Code Online (Sandbox Code Playgroud)
给我错误:
mscorlib.dll中出现"System.OverflowException"类型的异常,但未在用户代码中处理
附加信息:无法解析TimeSpan,因为至少有一个数字组件超出范围或包含太多数字.
为什么?
考虑具有单个字符串参数的TimeSpan.Parse方法的文档.
输入字符串的格式为:
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
Run Code Online (Sandbox Code Playgroud)
为简单起见,只考虑[d.]hh:mm[:ss]部分,其中d和ss分别为天,秒,它们是可选的.
hh 组件是小时,范围从0到23. d 组件是天,范围从0到10675199.在你的情况下hh:mm:ss格式化输入51:45:33具有hh等于51的部件,这就是为什么你得到溢出异常.天数可达10675199,因此您需要从51小时(即2天3小时)中选择整天.
结果代码看起来像是:
TimeSpan timeTaken = TimeSpan.Parse("2.3:45:33");
Run Code Online (Sandbox Code Playgroud)
还要注意有关文化敏感符号.和信息的信息 :.
要验证答案,您可以打印总分钟数
Console.WriteLine(timeTaken.TotalMinutes); //prints 3105.55
Console.WriteLine(51 * 60 + 45 + 33f / 60); //also prints 3105.55
Run Code Online (Sandbox Code Playgroud)