Estructura.Nested.Type.DateTime (estructura v1.11.0)
View SourceEstructura type implementation for handling DateTime values.
This type provides functionality for:
- Generating DateTime values for testing
- Coercing various inputs into DateTime format
- Validating DateTime values
Examples
iex> alias Estructura.Nested.Type.DateTime
iex> DateTime.validate(~U[2024-01-01 10:00:00Z])
{:ok, ~U[2024-01-01 10:00:00Z]}
iex> alias Estructura.Nested.Type.DateTime
iex> DateTime.validate("not a datetime")
{:error, "Expected date, got: \"not a datetime\""}The type implements the Estructura.Nested.Type behaviour, providing:
generate/1- Creates random DateTime values for property testingcoerce/1- Attempts to convert input into a DateTimevalidate/1- Ensures a value is a valid DateTime
Summary
Functions
Attempts to coerce a value into a DateTime.
Generates random DateTime values for property-based testing.
Validates that a term is a valid DateTime.
Functions
Attempts to coerce a value into a DateTime.
Delegates to Estructura.Coercers.DateTime.coerce/1 which handles various input formats.
Examples
iex> DateTime.coerce("2024-01-01T10:00:00Z")
{:ok, ~U[2024-01-01 10:00:00Z]}
iex> DateTime.coerce("invalid")
{:error, "Invalid DateTime format"}
Generates random DateTime values for property-based testing.
Options
Accepts all options supported by Estructura.StreamData.datetime/1.
Examples
iex> DateTime.generate() |> Enum.take(1) |> List.first()
#DateTime<...>
Validates that a term is a valid DateTime.
Returns {:ok, datetime} for valid DateTime values,
or {:error, reason} for invalid ones.
Examples
iex> DateTime.validate(~U[2024-01-01 10:00:00Z])
{:ok, ~U[2024-01-01 10:00:00Z]}
iex> DateTime.validate("2024")
{:error, "Expected date, got: \"2024\""}