【问题标题】:How to parse string to timespan如何将字符串解析为时间跨度
【发布时间】:2017-06-01 18:35:58
【问题描述】:

我想将文字字符串01:4:54:28 解析为时间跨度,但出现错误

输入的字符串格式不正确

代码:

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

【问题讨论】:

  • 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 在这里会更“正常”。
  • 你也可以使用 TimeSpan.TryParse 代替
  • dt.rows[i]["karkard"] 的值是多少?调用ToString() 然后解析结果几乎总是一个坏主意......通常最好只转换为正确的类型并使用它。
  • 该 karkard 列中的对象是什么类型?
  • 换句话说,dt.Rows[i]["karkard"].GetType().FullName 说什么?

标签: c# parsing timespan days


【解决方案1】:

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

  • 实际上是什么价值?
  • 我属于哪种文化?

首先,添加一个变量:

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

并找出调试器中的s 是什么。如果我们假设它真的是 "0:4:54:28",那么对我来说很好,这表明了文化。您可以通过重载覆盖文化:

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

这应该适用于任何人

【讨论】:

  • 亲爱的 Marc Gravell:我可以从你的回答中得到回应请帮助我更多地从“天:小时:分钟:秒”解析到时间跨度
猜你喜欢
  • 2015-11-09
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多