Estructura.Nested.Type.DateTime (estructura v1.9.0)

View Source

Estructura 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 testing
  • coerce/1 - Attempts to convert input into a DateTime
  • validate/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

coerce(term)

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"}

generate(opts \\ [])

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<...>

validate(term)

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\""}