Дата
Структура 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