private static TimeSpan AddTo(TimeSpan timeSpan, string numberWords, UnitOfTime unit) { var number = NumbersHelper.ParseNumber(numberWords); switch (unit) { case UnitOfTime.Second: return(timeSpan.Add(TimeSpan.FromSeconds(number))); case UnitOfTime.Minute: return(timeSpan.Add(TimeSpan.FromMinutes(number))); case UnitOfTime.Hour: return(timeSpan.Add(TimeSpan.FromHours(number))); case UnitOfTime.Day: return(timeSpan.Add(TimeSpan.FromDays(number))); case UnitOfTime.Week: return(timeSpan.Add(TimeSpan.FromDays(number * 7))); } return(timeSpan); }
public static TimeSpan WordsToTimeSpan(string timeString) { var timeWords = timeString.Replace("-", "").Split(' '); var numberBuffer = String.Empty; var resultTimeSpan = new TimeSpan(); foreach (var word in timeWords) { if (NumbersHelper.IsNumber(word)) { numberBuffer = $"{numberBuffer} {word}"; } else if (IsTimeWord(word, out var unitOfTime)) { resultTimeSpan = AddTo(resultTimeSpan, numberBuffer, unitOfTime); numberBuffer = String.Empty; } } return(resultTimeSpan); }