TimeSpan.ParseExact принимает время часов, а не количество времени.Следовательно, вы не можете использовать его по вашему требованию.Из того, что я понимаю, вы хотите получить общее количество часов из указанной строки в формате «часы: минуты: секунды».Надеюсь, что приведенный ниже код поможет вам решить проблему.Там уже были опубликованы ответы.Следующий код - это то, что я бы сделал, если бы столкнулся с проблемой.
Эта строка в вашем коде
var hours = GetHours(man_hours_nbr.Text);
Вот метод GetHours
public static double GetHours(string timeString)
{
var splitTime = timeString.Split(':');
if (splitTime.Length != 3)
throw new ArgumentException("Time string not in format HH:MM:SS");
var hours = Convert.ToDouble(splitTime[0]);
var mins = Convert.ToDouble(splitTime[1]);
var seconds = Convert.ToDouble(splitTime[2]);
var time = new TimeSpanBuilder()
.WithHours(hours)
.WithMinutes(mins)
.WithSeconds(seconds)
.Build();
return time.TotalHours;
}
Воткласс TimeSpanBuilder, (использует шаблон построителя)
public class TimeSpanBuilder
{
private TimeSpan _ts = TimeSpan.Zero;
public TimeSpanBuilder WithHours(double hours)
{
_ts = _ts.Add(TimeSpan.FromHours(hours));
return this;
}
public TimeSpanBuilder WithMinutes(double mins)
{
_ts = _ts.Add(TimeSpan.FromMinutes(mins));
return this;
}
public TimeSpanBuilder WithSeconds(double seconds)
{
_ts = _ts.Add(TimeSpan.FromMinutes(seconds));
return this;
}
public TimeSpan Build()
{
return _ts;
}
}