public static TryParseTime ( [ value, int &totalSeconds ) : bool | ||
value | [ | Value in “12:34” (or “12:34:56”) format. |
totalSeconds | int | Seconds from “00:00”. |
return | bool |
protected override bool TryParse(string value, out int parsed) { return(FlexibleParser.TryParseTime(value, out parsed)); }
public static bool TimeDiapasonContains([NotNull] this string s, int value, bool roundSingle = true) { if (s == null) { throw new ArgumentNullException(nameof(s)); } return(s.Split(',', ';').Select(x => x.Trim()).Any(part => { int n = part.IndexOf('-'), fromValue, toValue; if (n == 0) { var m = part.IndexOf('-', n + 1); if (m != -1 && m != 1) { n = m; } } if (n > 0 && n < part.Length - 1) // "x-y" { if (FlexibleParser.TryParseTime(part.Substring(0, n), out fromValue) && FlexibleParser.TryParseTime(part.Substring(n + 1), out toValue)) { return value >= fromValue && value <= toValue; } } else if (n < 0) // "x" { if (FlexibleParser.TryParseTime(part, out fromValue)) { if (roundSingle) { var delimiters = part.Count(':'); return fromValue.Equals(delimiters == 2 ? value : delimiters == 1 ? value.Floor(60) : value.Floor(60 * 60)); } return Equals(fromValue, value); } } else if (part.Length == 1) // "-" { return true; } else if (n == part.Length - 1) // "x-" { if (FlexibleParser.TryParseTime(part.Substring(0, n), out fromValue)) { return value >= fromValue; } } else // "-x" { if (FlexibleParser.TryParseTime(part.Substring(n + 1), out toValue)) { return value <= toValue; } } return false; })); }