protected override object ParseDate(object value) { if (value is BetweenValue) { var between = value as BetweenValue; var newTween = new BetweenValue(); newTween.From = between.From == null ? null : ParseDate(between.From); newTween.To = between.To == null ? null : ParseDate(between.To); return(newTween); } else if (value is string) { var str = ((string)value).Trim().ToLower(); foreach (var matcher in _matchers) { var match = matcher.Key.Match(str); if (match.Success) { return(matcher.Value(match)); } } } return(base.ParseDate(value)); }
public void IntValue_CheckValues() { var betweenValue = new BetweenValue(1, 5); Assert.AreEqual(1, ((INumericValue <int>)betweenValue.FirstValue).Value); Assert.AreEqual(5, ((INumericValue <int>)betweenValue.SecondValue).Value); }
protected virtual object ParseDate(object value) { if (value is DateTime) { return(new DateValue(((DateTime)value).Date, ((DateTime)value).Date.AddDays(1))); } else if (value is BetweenValue) { var between = value as BetweenValue; var newTween = new BetweenValue(); newTween.From = between.From == null ? null : ParseDate(between.From); newTween.To = between.To == null ? null : ParseDate(between.To); return(newTween); } else if (value is string) { var date = (string)value; var ci = new System.Globalization.CultureInfo("en-AU"); var formats = GetDateTimeFormats(); DateTime result = DateTime.MinValue; for (int i = 0; i < formats.Length; i++) { var format = formats[i]; if (DateTime.TryParseExact(date, format, ci, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out result)) { var end = result.Date; if (format.Contains("d")) { end = end.AddDays(1); } else if (format.Contains("M")) { end = end.AddMonths(1); // we have our month, but not our day } else if (format.Contains("y")) { end = end.AddYears(1); // we have our year, but not our month/day } return(new DateValue(result.Date, end)); } } // if we can parse a date using the built-in then we're dealing with a single day if (DateTime.TryParse(date, ci, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out result)) { return(new DateValue(result.Date, result.Date.AddDays(1))); } } // unable to parse throw new FormatException(String.Format("Could not intepret date value '{0}'.", value)); }