You can use string and RegularExpression
public class DataParameter
{
   [RegularExpression(@"^\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$", ErrorMessage = "Date should be in YYYY-MM-DD format")]
   public string StartDate { get; set; }
   [RegularExpression(@"^\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$", ErrorMessage = "Date should be in YYYY-MM-DD format")]
   public string EndDate { get; set; }
}
The regex is from here
Or create your own attribute, something like this
public class DateFormatAttribute : ValidationAttribute
{
    private readonly string _format;
    public DateFormatAttribute(string format)
        : base($"Date should be in {format} format.")
    {
        _format = format;
    }
    public override bool IsValid(object value)
    {
        if (value is not string dateStr)
        {
            return false;
        }
        return DateTime.TryParseExact(dateStr, _format, CultureInfo.InvariantCulture, DateTimeStyles.None, out _);
    }
}
Then use it as follows
[DateFormat("yyyy-MM-dd")]
public string StartDate { get; set; }
FluentValidation implementation
RuleFor(c => c.StartDate)
   .Must(x => DateTime.TryParseExact(x, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out _))
   .When(x => !string.IsNullOrWhiteSpace(x.StartDate))
   .WithMessage("Date should be in yyyy-MM-dd format");
Note that StartDate and EndDate are strings