Spec-Zone.ru › Elixir 1.3

Дата

Структура Date и функции.

Структура Date содержит поля год, месяц, день и календарь. Новые даты можно создать с помощью функции new/3 или используя сигил ~D.

iex> ~D[2000-01-01]
~D[2000-01-01]

Оба new/3 и сигил возвращают структуру, где к полям даты можно получить доступ напрямую:

iex> date = ~D[2000-01-01]
iex> date.year
2000
iex> date.month
1

Разработчики должны избегать непосредственного создания структуры Date и вместо этого полагаться на функции, предоставляемые этим модулем, а также на функции из библиотек календарей сторонних разработчиков.

Краткое описание

Типы

t()

Функции

from_erl(arg)

Преобразует кортеж даты Erlang в структуру Date.

from_erl!(tuple)

Преобразует кортеж даты Erlang, но вызывает исключение для недопустимых дат.

from_iso8601(arg)

Парсит расширенный формат «Дата и время суток», описанный в ISO8601:2004.

from_iso8601!(string)

Парсит расширенный формат «Дата и время суток», описанный в ISO8601:2004.

new(year, month, day)

Создает новую дату ISO.

to_erl(date)

Преобразует структуру Date в кортеж даты Erlang.

to_iso8601(date)

Преобразует заданное время даты в ISO8601.

to_string(date)

Преобразует заданную дату в строку в соответствии с ее календарем.

Типы

t()

t() :: %Date{calendar: Calendar.calendar, day: Calendar.day, month: Calendar.month, year: Calendar.year}

Функции

from_erl(arg)

from_erl(:calendar.date) :: {:ok, Date.t} | {:error, atom}

Преобразует кортеж даты Erlang в структуру Date.

Попытка преобразовать недопустимую дату ISO-календаря приведет к ошибке.

Примеры

iex> Date.from_erl({2000, 1, 1})
{:ok, ~D[2000-01-01]}
iex> Date.from_erl({2000, 13, 1})
{:error, :invalid_date}

from_erl!(tuple)

from_erl!(:calendar.date) :: Date.t | no_return

Преобразует кортеж даты Erlang, но вызывает исключение для недопустимых дат.

Примеры

iex> Date.from_erl!({2000, 1, 1})
~D[2000-01-01]
iex> Date.from_erl!({2000, 13, 1})
** (ArgumentError) cannot convert {2000, 13, 1} to date, reason: :invalid_date

from_iso8601(arg)

from_iso8601(String.t) :: {:ok, Date.t} | {:error, atom}

Парсит расширенный формат «Дата и время суток», описанный в ISO8601:2004.

Смещение часового пояса может быть включено в строку, но оно будет просто проигнорировано, поскольку такая информация не включена в наивные даты и время.

Представления времени с пониженной точностью не поддерживаются.

Примеры

iex> Date.from_iso8601("2015-01-23")
{:ok, ~D[2015-01-23]}

iex> Date.from_iso8601("2015:01:23")
{:error, :invalid_format}
iex> Date.from_iso8601("2015-01-32")
{:error, :invalid_date}

from_iso8601!(string)

from_iso8601!(String.t) :: Date.t | no_return

Парсит расширенный формат «Дата и время суток», описанный в ISO8601:2004.

Вызывает исключение, если формат недопустим.

Примеры

iex> Date.from_iso8601!("2015-01-23")
~D[2015-01-23]
iex> Date.from_iso8601!("2015:01:23")
** (ArgumentError) cannot parse "2015:01:23" as date, reason: :invalid_format

new(year, month, day)

new(Calendar.year, Calendar.month, Calendar.day) ::
  {:ok, Date.t} |
  {:error, atom}

Создает новую дату ISO.

Ожидаются все значения в виде целых чисел. Возвращает {:ok, time} если каждое значение попадает в соответствующий диапазон, возвращает :error в противном случае.

Примеры

iex> Date.new(2000, 1, 1)
{:ok, ~D[2000-01-01]}
iex> Date.new(2000, 13, 1)
{:error, :invalid_date}
iex> Date.new(2000, 2, 29)
{:ok, ~D[2000-02-29]}

iex> Date.new(2000, 2, 30)
{:error, :invalid_date}
iex> Date.new(2001, 2, 29)
{:error, :invalid_date}

to_erl(date)

to_erl(Date.t) :: :calendar.date

Преобразует структуру Date в кортеж даты Erlang.

Поддерживает только преобразование дат, которые находятся в календаре ISO, попытка преобразования дат из других календарей приведет к исключению.

Примеры

iex> Date.to_erl(~D[2000-01-01])
{2000, 1, 1}

to_iso8601(date)

to_iso8601(Date.t) :: String.t

Преобразует заданное время даты в ISO8601.

Поддерживает только преобразование дат и времени, которые находятся в календаре ISO, попытка преобразования дат и времени из других календарей приведет к исключению.

Примеры

iex> Date.to_iso8601(~D[2000-02-28])
"2000-02-28"

to_string(date)

to_string(Date.t) :: String.t

Преобразует заданную дату в строку в соответствии с ее календарем.

Примеры

iex> Date.to_string(~D[2000-02-28])
"2000-02-28"

© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.3.4/Date.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API