FEEL duration value.
FEEL defines year-month and day-time durations as distinct, generally incomparable kinds. A single elapsed-seconds value cannot represent calendar months, while Elixir's date/time APIs do not provide a value that preserves this FEEL distinction or fractional duration seconds.
The explicit kind field prevents accidental comparison or property access
across the two domains. Year-month values use months; day-time values use
seconds, with Decimal retained when fractional precision is present.
Summary
Functions
Returns the absolute duration.
Adds durations of the same kind.
Adds a duration to an Elixir date.
Adds a duration to an Elixir date-time.
Adds a day-time duration to an Elixir time.
Compares durations of the same kind.
Creates a day-time duration from whole days.
Creates a day-time duration from seconds.
Negates a duration.
Parses an ISO 8601 year-month or day-time duration.
Divides two durations of the same kind.
Multiplies a duration by a decimal factor.
Subtracts right from left.
Serializes a duration as ISO 8601 text.
Types
Functions
Returns the absolute duration.
Boxic.FEEL.Duration.abs(duration)
Adds durations of the same kind.
Boxic.FEEL.Duration.add(left, right)
Adds a duration to an Elixir date.
Boxic.FEEL.Duration.add_to_date(~D[2026-01-01], duration)
@spec add_to_datetime(DateTime.t(), t()) :: DateTime.t()
Adds a duration to an Elixir date-time.
Boxic.FEEL.Duration.add_to_datetime(datetime, duration)
Adds a day-time duration to an Elixir time.
Boxic.FEEL.Duration.add_to_time(~T[12:00:00], duration)
Compares durations of the same kind.
Boxic.FEEL.Duration.compare(left, right)
Creates a day-time duration from whole days.
Boxic.FEEL.Duration.from_days(2)
Creates a day-time duration from seconds.
Boxic.FEEL.Duration.from_seconds(90)
Negates a duration.
Boxic.FEEL.Duration.negate(duration)
Parses an ISO 8601 year-month or day-time duration.
Boxic.FEEL.Duration.parse_iso8601("P1Y2M")
Divides two durations of the same kind.
Boxic.FEEL.Duration.ratio(left, right)
Multiplies a duration by a decimal factor.
Boxic.FEEL.Duration.scale(duration, Decimal.new("1.5"))
Subtracts right from left.
Boxic.FEEL.Duration.subtract(left, right)
Serializes a duration as ISO 8601 text.
Boxic.FEEL.Duration.to_string(duration)