Estructura.Nested.Type.DateTime (estructura v1.9.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\""}