View Source Cldr.DateTime.Interval (Cldr Dates & Times v2.17.0)

Interval formats allow for software to format intervals like "Jan 10-12, 2008" as a shorter and more natural format than "Jan 10, 2008 - Jan 12, 2008". They are designed to take a start and end date, time or datetime plus a formatting pattern and use that information to produce a localized format.

See Cldr.Interval.to_string/3 and Cldr.DateTime.Interval.to_string/3

Summary

Functions

Returns the format code representing the date or time unit that is the greatest difference between two date/times.

Returns a localised string representing the formatted interval formed by two dates.

Returns a localised string representing the formatted interval formed by two dates or raises an exception.

Returns a localised string representing the formatted interval formed by two dates or raises an exception.

Functions

Link to this function

greatest_difference(from, to)

View Source

Returns the format code representing the date or time unit that is the greatest difference between two date/times.

Arguments

Returns

  • {:ok, format_code} where format_code is one of

    • :y meaning that the greatest difference is in the year
    • :M meaning that the greatest difference is in the month
    • :d meaning that the greatest difference is in the day
    • :H meaning that the greatest difference is in the hour
    • :m meaning that the greatest difference is in the minute
  • {:error, :no_practical_difference}

Example

iex> Cldr.DateTime.Interval.greatest_difference ~U[2022-04-22 02:00:00.0Z], ~U[2022-04-22 03:00:00.0Z]
{:ok, :H}

iex> Cldr.DateTime.Interval.greatest_difference ~U[2022-04-22 02:00:00.0Z], ~U[2022-04-22 02:00:01.0Z]
{:error, :no_practical_difference}
Link to this function

to_string(from, to, backend, options \\ [])

View Source
@spec to_string(
  Calendar.datetime() | nil,
  Calendar.datetime() | nil,
  Cldr.backend(),
  Keyword.t()
) ::
  {:ok, String.t()} | {:error, {module(), String.t()}}

Returns a localised string representing the formatted interval formed by two dates.

Arguments

  • from is any map that conforms to the Calendar.datetime type.

  • to is any map that conforms to the Calendar.datetime type. to must occur on or after from.

  • backend is any module that includes use Cldr and is therefore a Cldr backend module

  • options is a keyword list of options. The default is [].

Either of from or to may also be nil in which case the result is an "open" interval and the non-nil parameter is formatted using Cldr.DateTime.to_string/3.

Options

  • :format is one of :short, :medium or :long or a specific format type or a string representation of an interval format. The default is :medium.

  • :date_format is any one of :short, :medium, :long, :full. If defined, this option is used to format the date part of the date time. This option is only acceptable if the :format option is not specified, or is specified as either :short, :medium, :long, :full. If :date_format is not specified then the date format is defined by the :format option.

  • :time_format is any one of :short, :medium, :long, :full. If defined, this option is used to format the time part of the date time. This option is only acceptable if the :format option is not specified, or is specified as either :short, :medium, :long, :full. If :time_format is not specified thenthe time format is defined by the :format option.

  • locale is any valid locale name returned by Cldr.known_locale_names/0 or a Cldr.LanguageTag struct. The default is Cldr.get_locale/0

  • number_system: a number system into which the formatted date digits should be transliterated

Returns

  • {:ok, string} or

  • {:error, {exception, reason}}

Notes

  • For more information on interval format string see the Cldr.Interval.

  • The available predefined formats that can be applied are the keys of the map returned by Cldr.DateTime.Format.interval_formats("en", :gregorian) where "en" can be replaced by any configuration locale name and :gregorian is the underlying CLDR calendar type.

  • In the case where from and to are equal, a single date is formatted instead of an interval

Examples

iex> Cldr.DateTime.Interval.to_string ~U[2020-01-01 00:00:00.0Z],
...> ~U[2020-12-31 10:00:00.0Z], MyApp.Cldr
{:ok, "Jan 1, 2020, 12:00:00 AM – Dec 31, 2020, 10:00:00 AM"}

iex> Cldr.DateTime.Interval.to_string ~U[2020-01-01 00:00:00.0Z], nil, MyApp.Cldr
{:ok, "Jan 1, 2020, 12:00:00 AM –"}
Link to this function

to_string!(calendar_interval, backend, options)

View Source
@spec to_string!(CalendarInterval.t(), Cldr.backend(), Keyword.t()) ::
  String.t() | no_return()

Returns a localised string representing the formatted interval formed by two dates or raises an exception.

Arguments

  • from is any map that conforms to the Calendar.datetime type.

  • to is any map that conforms to the Calendar.datetime type. to must occur on or after from.

  • backend is any module that includes use Cldr and is therefore a Cldr backend module.

  • options is a keyword list of options. The default is [].

Options

  • :format is one of :short, :medium or :long or a specific format type or a string representing of an interval format. The default is :medium.

  • :date_format is any one of :short, :medium, :long, :full. If defined, this option is used to format the date part of the date time. This option is only acceptable if the :format option is not specified, or is specified as either :short, :medium, :long, :full. If :date_format is not specified then the date format is defined by the :format option.

  • :time_format is any one of :short, :medium, :long, :full. If defined, this option is used to format the time part of the date time. This option is only acceptable if the :format option is not specified, or is specified as either :short, :medium, :long, :full. If :time_format is not specified then the time format is defined by the :format option.

  • locale is any valid locale name returned by Cldr.known_locale_names/0 or a Cldr.LanguageTag struct. The default is Cldr.get_locale/0.

  • number_system: a number system into which the formatted date digits should be transliterated.

Returns

  • string or

  • raises an exception

Notes

  • For more information on interval format string see the Cldr.Interval.

  • The available predefined formats that can be applied are the keys of the map returned by Cldr.DateTime.Format.interval_formats("en", :gregorian) where "en" can be replaced by any configuration locale name and :gregorian is the underlying CLDR calendar type.

  • In the case where from and to are equal, a single date is formatted instead of an interval

Examples

iex> use CalendarInterval
iex> Cldr.DateTime.Interval.to_string! ~I"2020-01-01 00:00/10:00", MyApp.Cldr
"Jan 1, 2020, 12:00:00 AM – 10:00:59 AM"
Link to this function

to_string!(from, to, backend, options \\ [])

View Source

Returns a localised string representing the formatted interval formed by two dates or raises an exception.

Arguments

  • from is any map that conforms to the Calendar.datetime type.

  • to is any map that conforms to the Calendar.datetime type. to must occur on or after from.

  • backend is any module that includes use Cldr and is therefore a Cldr backend module.

  • options is a keyword list of options. The default is [].

Options

  • :format is one of :short, :medium or :long or a specific format type or a string representation of an interval format. The default is :medium.

  • :date_format is any one of :short, :medium, :long, :full. If defined, this option is used to format the date part of the date time. This option is only acceptable if the :format option is not specified, or is specified as either :short, :medium, :long, :full. If :date_format is not specified then the date format is defined by the :format option.

  • :time_format is any one of :short, :medium, :long, :full. If defined, this option is used to format the time part of the date time. This option is only acceptable if the :format option is not specified, or is specified as either :short, :medium, :long, :full. If :time_format is not specified then the time format is defined by the :format option.

  • locale is any valid locale name returned by Cldr.known_locale_names/0 or a Cldr.LanguageTag struct. The default is Cldr.get_locale/0.

  • number_system: a number system into which the formatted date digits should be transliterated.

Returns

  • string or

  • raises an exception

Notes

  • For more information on interval format string see the Cldr.Interval.

  • The available predefined formats that can be applied are the keys of the map returned by Cldr.DateTime.Format.interval_formats("en", :gregorian) where "en" can be replaced by any configuration locale name and :gregorian is the underlying CLDR calendar type.

  • In the case where from and to are equal, a single date is formatted instead of an interval

Examples

iex> Cldr.DateTime.Interval.to_string! ~U[2020-01-01 00:00:00.0Z],
...> ~U[2020-12-31 10:00:00.0Z], MyApp.Cldr
"Jan 1, 2020, 12:00:00 AM – Dec 31, 2020, 10:00:00 AM"