   #
 
   @doc """
-  Checks if the value is a valid time.
+  Checks if the `string` is a valid time representation.
 
   This function returns `true` if the value is a string and is formatted as
   defined by [RFC 3339](https://tools.ietf.org/html/rfc3339), `false` otherwise.
   """
-  @spec time?(any) :: boolean
+  @spec time?(String.t()) :: boolean
   def time?(string) when is_binary(string),
     do: date_time?("2000-01-01T#{string}")
 

  ```
  Wikipedia: [Uniform Resource Identifier](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier)
  """
  @spec uri?(any) :: boolean
  def uri?(string), do: do_uri?(string, :uri)

  @doc """
  Checks if the value is a valid uri reference.
  """
  @spec uri_reference?(any) :: boolean
  def uri_reference?(string), do: do_uri?(string, :uri_reference)

  @doc """
  Checks if the value is a valid uri template.
  """
  def uri_template?(string), do: do_uri?(string, :uri_template)


  #

  @doc """
  Checks if the `string` is a valid date representation.

  This function returns `true` if the value is a string and is formatted as
  defined by [RFC 3339](https://tools.ietf.org/html/rfc3339), `false` otherwise.
  """
  @spec time?(String.t()) :: boolean
  def date?(string) when is_binary(string),
    do: date_time?("#{string}T00:00:00.0Z")

