2017-06-01 33 views
1

我想文字串01:4:54:28解析为一个时间跨度,但我得到的错误如何解析字符串时间跨度

输入的字符串不是正确的格式

代码:

TimeSpan t = TimeSpan.Parse(dt.Rows[i]["karkard"].ToString()); 
+1

var ts = TimeSpan.Parse(“0:4:54:28”);'对我很好,你是否可能在不同的时间格式文化中运行?另外,你是否确定该字符串是“0:4:54:28”?提示:将它读入一个变量,以便调试它:var s = dt.Rows [i] [“karkard”]。ToString(); TimeSpan t = TimeSpan.Parse(s);'。注意:这里“0.04:54.28”会更“正常”。 –

+0

您也可以使用TimeSpan.TryParse而不是 –

+0

'dt.rows [i] [“karkard”]'的价值是什么?调用'ToString()'然后解析结果几乎总是一个坏主意......通常最好转换为正确的类型并使用它。 –

回答

4

在格式化和解析中有两个因素起作用:

  • 什么其实是值?
  • 我在哪种文化?

为先,添加一个变量:

string s = dt.Rows[i]["karkard"].ToString(); 
TimeSpan t = TimeSpan.Parse(s); 

,并找出s是在调试器。如果我们假设它确实是"0:4:54:28",那么对我来说工作正常,这表明文化。您可以通过超载重载文化:

TimeSpan t = TimeSpan.Parse(s, CultureInfo.InvariantCulture); 

应为工作。

+0

亲爱的Marc Gravell:我可以从你的答案得到回应请帮助我解析从“日:小时:分:秒”的时间跨度, – Shayan