Here is a non-regex way to write a DateTime validation in MVC app:
[Required(ErrorMessage = "This value is required!")]
[MyValidateTime]
public string TimeValue { get; set; }
And here is the MyValidateTime
code:
public class MyValidateTime: ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
DateTime dt;
if (DateTime.TryParseExact((string)value, new[] { "hh:mm tt", "h:mm tt" }, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
return ValidationResult.Success;
else
return new ValidationResult("Correct time formats: 01:00 AM or 1:00 AM");
}
}
Here, the allowed time formats are:
- hh:mm tt (01:00 AM)
- h:mm tt (1:00 AM)
See more DateTime formats at Custom Date and Time Format Strings MSDN page