Как проанализировать строку как 30:15 к TimeSpan в C#? 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]))));
Это не кажется слишком изящным.
Если вы уверены, что формат всегда будет «ЧЧ: мм», попробуйте что-нибудь вроде этого:
string span = "35:15";
TimeSpan ts = new TimeSpan(int.Parse(span.Split(':')[0]), // hours
int.Parse(span.Split(':')[1]), // minutes
0); // seconds
Подобно ответу Люка:
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);
Очевидно, предполагается, что исходная строка правильно сформирована (состоит из двух частей, разделенных двоеточием и допускающих разбор до целого числа).
Обычно используется TimeSpan.ParseExact
там, где требуется определенный формат. Но единственные форматы часов, которые могут быть указаны, - это части дней (см. Custom TimeSpan Format Strings ).
Следовательно, вам нужно будет проделать эту работу самостоятельно:
string input = "30:24";
var parts = input.Split(':');
var hours = Int32.Parse(parts[0]);
var minutes = Int32.Parse(parts[1]);
var result = new TimeSpan(hours, minutes, 0);
(Но с некоторой проверкой ошибок.)
Конструктор трех целочисленных значений timespan допускает переполнение часов> = 24 в счетчике дней.