将字符串转换为时间跨度

时间:2016-01-30 06:25:28

标签: c#

我需要将我的字符串转换为c#中的时间跨度,这是我的字符串52:13:27.0000000 当我尝试Timespan.parse时,它给出了错误

  

无法解析TimeSpan,因为至少有一个数字   组件超出范围或包含太多数字。

请帮忙! 感谢

3 个答案:

答案 0 :(得分:4)

TimeSpan.Parse()接受Days:Hours:Minutes:Seconds:Miliseconds如果您想要超过24小时,则需要添加一天。

在您的具体情况下,它应该类似于以下内容:

TimeSpan.Parse("2:04:13:27.0000000");

答案 1 :(得分:2)

您可以做的是通过执行以下操作将小时数转换为几天:

string x = "52:13:27.000";
        TimeSpan ts = new TimeSpan(int.Parse(x.Split(':')[0]),    // hours
                       int.Parse(x.Split(':')[1]),    // minutes
                       int.Parse(x.Split(':')[2].Split('.')[0] )   // seconds
                       );

期望输出:

enter image description here

答案 2 :(得分:0)

  

Timespan.parse正在提供错误,因为它不能采取

 hours>23
 minutes>59
 seconds>59
 /*Parsing string format with above conditions  "hh:mm:ss:miliseconds"*/
 Timespan.parse("hh:mm:ss:miliseconds");

以这种格式你不会得到例外

或使用

string str = "52:13:27.0000000";
int hours = Convert.ToInt32(str.Substring(0,2));
int minutes = Convert.ToInt32(str.Substring(3, 2));
int seconds =  Convert.ToInt32(str.Substring(6, 2));
string miliseconds= (str.Substring(str.IndexOf('.')+1,str.Length-str.IndexOf('.')-1));
TimeSpan sp = TimeSpan.FromHours(hours);
TimeSpan interval = TimeSpan.Parse(sp .Days+ ":"+sp.Hours+":"+minutes+":"+seconds+"."+
miliseconds);