Datix.DateTime (datix v0.1.1) View Source

A DateTime parser using Calendar.strftime format-string.

Link to this section Summary

Functions

Parses a datetime string according to the given format.

Parses a datetime string according to the given format, erroring out for invalid arguments.

Link to this section Functions

Link to this function

parse(datetime_str, format_str, opts \\ [])

View Source

Specs

parse(String.t(), String.t(), list()) ::
  {:ok, DateTime.t(), {String.t(), integer()}}
  | {:error, :invalid_date}
  | {:error, :invalid_input}
  | {:error, {:parse_error, [expected: String.t(), got: String.t()]}}
  | {:error, {:conflict, [expected: term(), got: term(), modifier: String.t()]}}
  | {:error, {:invalid_string, [{:modifier, String.t()}]}}
  | {:error, {:invalid_integer, [{:modifier, String.t()}]}}
  | {:error, {:invalid_modifier, [{:modifier, String.t()}]}}

Parses a datetime string according to the given format.

See the Calendar.strftime documentation for how to specify a format-string.

The :ok tuple contains always an UTC datetime and a tuple with the time zone infos.

Options

  • :calendar - the calendar to build the Date, defaults to Calendar.ISO

  • :preferred_date - a string for the preferred format to show dates, it can't contain the %x format and defaults to "%Y-%m-%d" if the option is not received

  • :month_names - a list of the month names, if the option is not received it defaults to a list of month names in English

  • :abbreviated_month_names - a list of abbreviated month names, if the option is not received it defaults to a list of abbreviated month names in English

  • :day_of_week_names - a list of day names, if the option is not received it defaults to a list of day names in English

  • :abbreviated_day_of_week_names - a list of abbreviated day names, if the option is not received it defaults to a list of abbreviated day names in English

  • :preferred_time - a string for the preferred format to show times, it can't contain the %X format and defaults to "%H:%M:%S" if the option is not received

  • :am_pm_names - a keyword list with the names of the period of the day, defaults to [am: "am", pm: "pm"].

Examples

    iex> Datix.DateTime.parse("2021/01/10 12:14:24", "%Y/%m/%d %H:%M:%S")
    {:ok, ~U[2021-01-10 12:14:24Z], {"UTC", 0}}

    iex> Datix.DateTime.parse("2018/06/27 11:23:55 CEST+0200", "%Y/%m/%d %H:%M:%S %Z%z")
    {:ok, ~U[2018-06-27 09:23:55Z], {"CEST", 7_200}}
Link to this function

parse!(datetime_str, format_str, opts \\ [])

View Source

Specs

parse!(String.t(), String.t(), list()) :: DateTime.t()

Parses a datetime string according to the given format, erroring out for invalid arguments.

This function is just defined for UTC datetimes.

Examples

    iex> Datix.DateTime.parse!("2018/06/27 11:23:55 UTC+0000", "%Y/%m/%d %H:%M:%S %Z%z")
    ~U[2018-06-27 11:23:55Z]

    iex> Datix.DateTime.parse!("2018/06/27 11:23:55 CEST+0200", "%Y/%m/%d %H:%M:%S %Z%z")
    ** (ArgumentError) parse!/3 is just defined for UTC, not for CEST