private bool TryParseDateTime(string text, out DateTime result) { bool isValid = false; result = this.ContextNow; DateTime current = this.ContextNow; if (this.Value.HasValue) { current = this.Value.Value; } else { try { current = DateTime.Parse(this.ContextNow.ToString(), this.CultureInfo.DateTimeFormat); isValid = DateTimeParser.TryParse(text, this.GetFormatString(Format), current, this.CultureInfo, out result); } catch (FormatException) { isValid = false; } } if (!isValid) { isValid = DateTime.TryParseExact(text, this.GetFormatString(this.Format), this.CultureInfo, DateTimeStyles.None, out result); } if (!isValid) { result = (_lastValidDate != null) ? _lastValidDate.Value : current; } return(isValid); }