如何解析时间大于24的字符串到TimeSpan?

jlp*_*jlp 27 c# timespan

如何在C#中将30:15的字符串解析为TimeSpan?30:15表示30小时15分钟.

string span = "30:15";
TimeSpan ts = TimeSpan.FromHours(
    Convert.ToDouble(span.Split(':')[0])).
  Add(TimeSpan.FromMinutes(
    Convert.ToDouble((span.Split(':')[1]))));
Run Code Online (Sandbox Code Playgroud)

这似乎并不太优雅.

Luk*_*keH 29

如果你确定格式总是"HH:mm",那么尝试这样的事情:

string span = "35:15";
TimeSpan ts = new TimeSpan(int.Parse(span.Split(':')[0]),    // hours
                           int.Parse(span.Split(':')[1]),    // minutes
                           0);                               // seconds
Run Code Online (Sandbox Code Playgroud)

  • 这不适用于负时间跨度(-35:15会导致-34:45) (3认同)

Eri*_*igo 5

类似于卢克的回答:

String span = "123:45";
Int32 colon = span.IndexOf(':');
TimeSpan timeSpan = new TimeSpan(Int32.Parse(span.Substring(0, colon - 1)),
                                 Int32.Parse(span.Substring(colon + 1)), 0);
Run Code Online (Sandbox Code Playgroud)

显然,它假设原始字符串是格式良好的(由用冒号分隔的两部分组成,可解析为整数)。