# File lib/validates_timeliness/extensions/multiparameter_handler.rb, line 51
  def read_date
    set_values = values.values_at(1,2,3).map {|v| v.is_a?(String) ? v.strip : v }
    
    if set_values.any? { |v| v.is_a?(String) }
      Timeliness.parse(set_values.join('-'), :date).try(:to_date) or raise TypeError
    else
      Date.new(*set_values)
    end
  rescue TypeError, ArgumentError, NoMethodError => ex # if Date.new raises an exception on an invalid date
    # Date.new with nil values throws NoMethodError
    raise ex if ex.is_a?(NoMethodError) && ex.message !~ /undefined method `div' for/
    invalid_multiparameter_date_or_time_as_string(set_values)
  end