public static bool TryParse(string value, out LeapYearMatcher leapYearMatcherMatcher) { leapYearMatcherMatcher = default; if (value is null || !value.EndsWith("/Leap")) { return(false); } var range = value.Remove(value.IndexOf("/Leap", StringComparison.Ordinal)); if (!TryParse(range, null, null, null, null, out var left, out var right)) { return(false); } if (left.HasValue && left == right) { return(false); // Single year range are invalid } leapYearMatcherMatcher = new LeapYearMatcher(left, right); return(true); }
public override bool Match(DateTime date) => base.Match(date) && !LeapYearMatcher.IsLeapYear(date);