Tempus v0.1.0 Tempus.Slot View Source
Declares a timeslot and exports functions to check whether the given date and/or datetime is covered by this slot or not.
This module probably should not be called directly.
Link to this section Summary
Functions
Compares two slot structs.
Checks whether to Slot
covers the data/datetime passed as a second argument.
Returns true
if two slots are disjoined, false
otherwise.
Joins slots to the maximal covered timeslice.
Compares two slot structs. The same as compare/2
, but returns :joint
if
the slots are overlapped.
Checks whether the Slot
is valid (to > from) or not.
Link to this section Types
Specs
origin() :: t() | Date.t() | DateTime.t() | Time.t() | nil
The origin used in comparisons and calculations
Specs
t() :: %Tempus.Slot{from: DateTime.t(), to: DateTime.t()}
A timeslot to be used in Tempus
Link to this section Functions
Specs
Compares two slot structs.
Returns :gt
if first slot is later than the second and :lt
for vice versa.
If the two slots are equal :eq
is returned.
Might be used in Enum.sort/2
.
Specs
Checks whether to Slot
covers the data/datetime passed as a second argument.
Examples
iex> dt_between = ~U|2015-09-30 01:00:00Z|
...> dt_from = ~U|2015-09-30 00:00:00Z|
...> dt_to = ~U|2015-10-01 01:00:00Z|
...> d_from = Date.from_iso8601!("2015-09-30")
...> d_to = Date.from_iso8601!("2015-10-01")
iex> slot = %Tempus.Slot{from: dt_from, to: dt_to}
iex> Tempus.Slot.cover?(slot, dt_between)
true
iex> Tempus.Slot.cover?(slot, dt_to)
true
iex> Tempus.Slot.cover?(slot, dt_to, true)
false
iex> Tempus.Slot.cover?(slot, d_from)
true
iex> Tempus.Slot.cover?(slot, d_from, true)
false
iex> Tempus.Slot.cover?(slot, d_to)
false
Specs
Returns true
if two slots are disjoined, false
otherwise.
Examples
iex> slot = %Tempus.Slot{from: ~U|2015-09-01 00:00:00Z|, to: ~U|2015-10-01 00:00:00Z|}
iex> inner = %Tempus.Slot{from: ~U|2015-09-01 00:00:00Z|, to: ~U|2015-09-01 01:00:00Z|}
iex> Tempus.Slot.disjoint?(slot, inner)
false
iex> inner = %Tempus.Slot{from: ~U|2015-09-01 00:00:00Z|, to: ~U|2015-10-01 01:00:00Z|}
iex> Tempus.Slot.disjoint?(slot, inner)
false
iex> outer = %Tempus.Slot{from: ~U|2015-10-01 00:00:01Z|, to: ~U|2015-10-01 01:00:00Z|}
iex> Tempus.Slot.disjoint?(slot, outer)
true
Specs
Joins slots to the maximal covered timeslice.
Example
iex> Tempus.Slot.join([Tempus.Slot.wrap(~D|2020-09-30|), Tempus.Slot.wrap(~D|2020-10-02|)])
#Slot<[from: ~U[2020-09-30 00:00:00.000000Z], to: ~U[2020-10-02 23:59:59.999999Z]]>
Specs
Compares two slot structs. The same as compare/2
, but returns :joint
if
the slots are overlapped.
Specs
Checks whether the Slot
is valid (to > from) or not.
Examples
iex> slot = %Tempus.Slot{from: ~U|2015-09-30 00:00:00Z|, to: ~U|2015-10-01 01:00:00Z|}
iex> Tempus.Slot.valid?(slot)
true
iex> Tempus.Slot.valid?(%Tempus.Slot{from: slot.to, to: slot.from})
false
Specs
wrap(origin(), DateTime.t()) :: t()
Wraps the argument into a slot. For DateTime
it’d be a single microsecond.
For a Date
, it would be the whole day, starting at 00:00:00.000000
and
ending at `23:59:59:999999`.
Examples
iex> Tempus.Slot.wrap(~D|2020-08-06|)
#Slot<[from: ~U[2020-08-06 00:00:00.000000Z], to: ~U[2020-08-06 23:59:59.999999Z]]>