timex v3.1.13 Timex.Comparable protocol

This protocol is used for comparing and diffing different date/time representations

Summary

Functions

Compare two date or datetime types

Get the difference between two date or datetime types

Types

comparable()
comparable ::
  Date.t |
  DateTime.t |
  NaiveDateTime.t |
  Timex.Types.date |
  Timex.Types.datetime
compare_result()
compare_result() :: -1 | 0 | 1 | {:error, term}
constants()
constants() :: :epoch | :zero | :distant_past | :distant_future
diff_result()
diff_result() :: Timex.Duration.t | integer | {:error, term}
granularity()
granularity ::
  :years |
  :months |
  :weeks |
  :calendar_weeks |
  :days |
  :hours |
  :minutes |
  :seconds |
  :milliseconds |
  :microseconds |
  :duration
t()
t() :: term

Functions

compare(a, b, granularity \\ :microseconds)

Compare two date or datetime types.

You can optionally specify a comparison granularity, any of the following:

  • :years
  • :months
  • :weeks
  • :calendar_weeks (weeks of the calendar as opposed to actual weeks in terms of days)
  • :days
  • :hours
  • :minutes
  • :seconds
  • :milliseconds
  • :microseconds (default)
  • :duration

and the dates will be compared with the cooresponding accuracy. The default granularity is :microseconds.

  • 0: when equal
  • -1: when the first date/time comes before the second
  • 1: when the first date/time comes after the second
  • {:error, reason}: when there was a problem comparing, perhaps due to a value being passed which is not a valid date/datetime
diff(a, b, granularity \\ :microseconds)

Get the difference between two date or datetime types.

You can optionally specify a diff granularity, any of the following:

  • :years
  • :months
  • :calendar_weeks (weeks of the calendar as opposed to actual weeks in terms of days)
  • :weeks
  • :days
  • :hours
  • :minutes
  • :seconds
  • :milliseconds
  • :microseconds (default)
  • :duration

and the result will be an integer value of those units or a Duration struct. The diff value will be negative if a comes before b, and positive if a comes after b. This behaviour mirrors compare/3.