Spec-Zone.ru › Elixir 1.18

Источник Дата

Структура и функции для работы с датой.

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

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, а также с любой структурой, которая содержит те же поля, что и структура Date, такие как NaiveDateTime и DateTime. Такие функции ожидают Calendar.date/0 в своих описаниях типов (вместо t/0).

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

Сравнение дат

Сравнения в Elixir с использованием ==/2, >/2, </2 и аналогичных функций являются структурными и основаны на полях структуры Date. Для правильного сравнения дат используйте функцию compare/2. Наличие функции compare/2 в этом модуле также позволяет использовать функции Enum.min/2 и Enum.max/2 для получения минимальной и максимальной даты из набора Enum. Например:

iex>  Enum.min([~D[2017-03-31], ~D[2017-04-01]], Date)
~D[2017-03-31]

Использование эпох

Функции add/2, diff/2 и shift/2 могут использоваться для вычисления дат или получения количества дней между моментами времени. Например, если необходимо вычислить количество дней с эпохи Unix (1970-01-01):

iex> Date.diff(~D[2010-04-17], ~D[1970-01-01])
14716

iex> Date.add(~D[1970-01-01], 14716)
~D[2010-04-17]

iex> Date.shift(~D[1970-01-01], year: 40, month: 3, week: 2, day: 2)
~D[2010-04-17]

Эти функции оптимизированы для работы с общими эпохами, такими как эпоха Unix или эпоха григорианского календаря (0000-01-01).

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

Типы

t()

Функции

add(date, days)

Добавляет заданное количество дней к заданной date.

after?(date1, date2)

Возвращает true, если первая дата строго позже второй.

before?(date1, date2)

Возвращает true, если первая дата строго раньше второй.

beginning_of_month(date)

Вычисляет дату, которая является первым днём месяца для заданной date.

beginning_of_week(date, starting_on \\ :default)

Вычисляет дату, которая является первым днём недели для заданной date.

compare(date1, date2)

Сравнивает две даты.

convert(date, calendar)

Преобразует заданную date из её календаря в заданный calendar.

convert!(date, calendar)

Аналогично Date.convert/2, но вызывает исключение ArgumentError, если преобразование между двумя календарями невозможно.

day_of_era(date)

Вычисляет день эры и эру для заданного календаря date.

day_of_week(date, starting_on \\ :default)

Вычисляет день недели заданной date.

day_of_year(date)

Вычисляет день года для заданной date.

days_in_month(date)

Возвращает количество дней в заданном date месяце.

diff(date1, date2)

Вычисляет разницу между двумя датами в полных днях.

end_of_month(date)

Вычисляет дату, которая является последним днём месяца для заданной date.

end_of_week(date, starting_on \\ :default)

Вычисляет дату, которая является последним днём недели для заданной date.

from_erl(tuple, calendar \\ Calendar.ISO)

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

from_erl!(tuple, calendar \\ Calendar.ISO)

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

from_gregorian_days(days, calendar \\ Calendar.ISO)

Преобразует количество григорианских дней в структуру Date.

from_iso8601(string, calendar \\ Calendar.ISO)

Парсит расширенный формат «Dates», описанный в ISO 8601:2019.

from_iso8601!(string, calendar \\ Calendar.ISO)

Парсит расширенный формат «Dates», описанный в ISO 8601:2019.

leap_year?(date)

Возвращает true, если год в заданной date является високосным.

months_in_year(date)

Возвращает количество месяцев в заданном date году.

new(year, month, day, calendar \\ Calendar.ISO)

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

new!(year, month, day, calendar \\ Calendar.ISO)

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

quarter_of_year(date)

Вычисляет квартал года для заданной date.

range(first, last)

Возвращает диапазон дат.

range(first, last, step)

Возвращает диапазон дат с шагом.

shift(date, duration)

Смещает заданную date на duration в соответствии с её календарём.

to_erl(date)

Преобразует заданную date в кортеж даты Erlang.

to_gregorian_days(date)

Преобразует структуру date в количество григорианских дней.

to_iso8601(date, format \\ :extended)

Преобразует заданную date в ISO 8601:2019.

to_string(date)

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

utc_today(calendar \\ Calendar.ISO)

Возвращает текущую дату в UTC.

year_of_era(date)

Вычисляет год эры и эру для заданного календарного года.

Типы

t()Source

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

Функции

add(date, days)Source

@spec add(Calendar.date(), integer()) :: t()

Добавляет заданное количество дней к заданной date.

Дни считаются как григорианские дни. Дата возвращается в том же календаре, что и исходная.

Для смещения даты на Duration и в соответствии с её базовым календарем, используйте Date.shift/2.

Примеры

iex> Date.add(~D[2000-01-03], -2)
~D[2000-01-01]
iex> Date.add(~D[2000-01-01], 2)
~D[2000-01-03]
iex> Date.add(~N[2000-01-01 09:00:00], 2)
~D[2000-01-03]
iex> Date.add(~D[-0010-01-01], -2)
~D[-0011-12-30]

after?(date1, date2)Source

@spec after?(Calendar.date(), Calendar.date()) :: boolean()

Возвращает true если первая дата строго позже второй.

Примеры

iex> Date.after?(~D[2022-02-02], ~D[2021-01-01])
true
iex> Date.after?(~D[2021-01-01], ~D[2021-01-01])
false
iex> Date.after?(~D[2021-01-01], ~D[2022-02-02])
false

before?(date1, date2)Source

@spec before?(Calendar.date(), Calendar.date()) :: boolean()

Возвращает true если первая дата строго раньше второй.

Примеры

iex> Date.before?(~D[2021-01-01], ~D[2022-02-02])
true
iex> Date.before?(~D[2021-01-01], ~D[2021-01-01])
false
iex> Date.before?(~D[2022-02-02], ~D[2021-01-01])
false

beginning_of_month(date)Source

@spec beginning_of_month(Calendar.date()) :: t()

Вычисляет дату, которая является первым днём месяца для данной date.

Примеры

iex> Date.beginning_of_month(~D[2000-01-31])
~D[2000-01-01]
iex> Date.beginning_of_month(~D[2000-01-01])
~D[2000-01-01]
iex> Date.beginning_of_month(~N[2000-01-31 01:23:45])
~D[2000-01-01]

beginning_of_week(date, starting_on \\ :default)Source

@spec beginning_of_week(Calendar.date(), starting_on :: :default | atom()) :: t()

Вычисляет дату, которая является первым днём недели для данной date.

Если день уже является первым днём недели, возвращает сам день. Для встроенного календаря ISO неделя начинается с понедельника. Может быть указан день недели, а не :default в качестве starting_on.

Примеры

iex> Date.beginning_of_week(~D[2020-07-11])
~D[2020-07-06]
iex> Date.beginning_of_week(~D[2020-07-06])
~D[2020-07-06]
iex> Date.beginning_of_week(~D[2020-07-11], :sunday)
~D[2020-07-05]
iex> Date.beginning_of_week(~D[2020-07-11], :saturday)
~D[2020-07-11]
iex> Date.beginning_of_week(~N[2020-07-11 01:23:45])
~D[2020-07-06]

compare(date1, date2)Source

@spec compare(Calendar.date(), Calendar.date()) :: :lt | :eq | :gt

Сравнивает две структуры дат.

Возвращает :gt если первая дата позже второй и :lt в обратном случае. Если две даты равны, возвращается :eq.

Примеры

iex> Date.compare(~D[2016-04-16], ~D[2016-04-28])
:lt

Эта функция также может использоваться для сравнения через более сложные типы календарей, учитывая только поля даты:

iex> Date.compare(~D[2016-04-16], ~N[2016-04-28 01:23:45])
:lt
iex> Date.compare(~D[2016-04-16], ~N[2016-04-16 01:23:45])
:eq
iex> Date.compare(~N[2016-04-16 12:34:56], ~N[2016-04-16 01:23:45])
:eq

convert(date, calendar)Source

@spec convert(Calendar.date(), Calendar.calendar()) ::
  {:ok, t()} | {:error, :incompatible_calendars}

Преобразует заданную date из её календаря в заданный calendar.

Возвращает {:ok, date} если календари совместимы, или {:error, :incompatible_calendars} если они не совместимы.

См. также Calendar.compatible_calendars?/2.

Примеры

Представьте, кто-то реализовал Calendar.Holocene, календарь, основанный на григорианском календаре, который добавляет ровно 10 000 лет к текущему григорианскому году:

iex> Date.convert(~D[2000-01-01], Calendar.Holocene)
{:ok, %Date{calendar: Calendar.Holocene, year: 12000, month: 1, day: 1}}

convert!(date, calendar)Source

@spec convert!(Calendar.date(), Calendar.calendar()) :: t()

Аналогично Date.convert/2, но генерирует исключение ArgumentError, если преобразование между двумя календарями невозможно.

Примеры

Представьте, кто-то реализовал Calendar.Holocene, календарь, основанный на григорианском календаре, который добавляет ровно 10 000 лет к текущему григорианскому году:

iex> Date.convert!(~D[2000-01-01], Calendar.Holocene)
%Date{calendar: Calendar.Holocene, year: 12000, month: 1, day: 1}

day_of_era(date)Source

@spec day_of_era(Calendar.date()) :: {Calendar.day(), non_neg_integer()}

Вычисляет день эры и эру для заданного календарного date.

Возвращает кортеж {day, era} представляющий день в рамках эры и номер эры.

Примеры

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

iex> Date.day_of_era(~D[0000-12-31])
{1, 0}

day_of_week(date, starting_on \\ :default)Source

@spec day_of_week(Calendar.date(), starting_on :: :default | atom()) ::
  Calendar.day_of_week()

Вычисляет день недели для заданной date.

Возвращает день недели как целое число. Для календаря ISO 8601 (по умолчанию) это целое число от 1 до 7, где 1 — понедельник, а 7 — воскресенье.

Может быть указано необязательное значение starting_on , которое настраивает день недели, с которого начинается неделя. Значение по умолчанию — :default, что соответствует :monday для встроенного календаря ISO. Можно указать любой другой день недели.

Примеры

iex> Date.day_of_week(~D[2016-10-31])
1
iex> Date.day_of_week(~D[2016-11-01])
2
iex> Date.day_of_week(~N[2016-11-01 01:23:45])
2
iex> Date.day_of_week(~D[-0015-10-30])
3

iex> Date.day_of_week(~D[2016-10-31], :sunday)
2
iex> Date.day_of_week(~D[2016-11-01], :sunday)
3
iex> Date.day_of_week(~N[2016-11-01 01:23:45], :sunday)
3
iex> Date.day_of_week(~D[-0015-10-30], :sunday)
4

day_of_year(date)Source

@spec day_of_year(Calendar.date()) :: Calendar.day()

Вычисляет день года для данной date.

Возвращает день года как целое число. Для календаря ISO 8601 (по умолчанию) это целое число от 1 до 366.

Примеры

iex> Date.day_of_year(~D[2016-01-01])
1
iex> Date.day_of_year(~D[2016-11-01])
306
iex> Date.day_of_year(~D[-0015-10-30])
303
iex> Date.day_of_year(~D[2004-12-31])
366

days_in_month(date)Source

@spec days_in_month(Calendar.date()) :: Calendar.day()

Возвращает количество дней в данном date месяце.

Примеры

iex> Date.days_in_month(~D[1900-01-13])
31
iex> Date.days_in_month(~D[1900-02-09])
28
iex> Date.days_in_month(~N[2000-02-20 01:23:45])
29

diff(date1, date2)Source

@spec diff(Calendar.date(), Calendar.date()) :: integer()

Вычисляет разницу между двумя датами в полных днях.

Возвращает количество григорианских дней между датами. Только структуры Date, которые следуют одному и тому же или совместимым календарям, могут быть сравнены таким образом. Если два календаря несовместимы, будет сгенерировано исключение.

Примеры

iex> Date.diff(~D[2000-01-03], ~D[2000-01-01])
2
iex> Date.diff(~D[2000-01-01], ~D[2000-01-03])
-2
iex> Date.diff(~D[0000-01-02], ~D[-0001-12-30])
3
iex> Date.diff(~D[2000-01-01], ~N[2000-01-03 09:00:00])
-2

end_of_month(date)Source

@spec end_of_month(Calendar.date()) :: t()

Вычисляет дату, которая является последним днём месяца для данной date.

Примеры

iex> Date.end_of_month(~D[2000-01-01])
~D[2000-01-31]
iex> Date.end_of_month(~D[2000-01-31])
~D[2000-01-31]
iex> Date.end_of_month(~N[2000-01-01 01:23:45])
~D[2000-01-31]

end_of_week(date, starting_on \\ :default)Source

@spec end_of_week(Calendar.date(), starting_on :: :default | atom()) :: t()

Вычисляет дату, которая является последним днём недели для данной date.

Если день уже является последним днём недели, возвращает сам день. Для встроенного календаря ISO неделя заканчивается в воскресенье. День недели, а не :default может быть передан как starting_on.

Примеры

iex> Date.end_of_week(~D[2020-07-11])
~D[2020-07-12]
iex> Date.end_of_week(~D[2020-07-05])
~D[2020-07-05]
iex> Date.end_of_week(~D[2020-07-06], :sunday)
~D[2020-07-11]
iex> Date.end_of_week(~D[2020-07-06], :saturday)
~D[2020-07-10]
iex> Date.end_of_week(~N[2020-07-11 01:23:45])
~D[2020-07-12]

from_erl(tuple, calendar \\ Calendar.ISO)Source

@spec from_erl(:calendar.date(), Calendar.calendar()) :: {:ok, 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}
END_OF_DOCUMENT_MARKER

from_erl!(tuple, calendar \\ Calendar.ISO)Source

@spec from_erl!(:calendar.date(), Calendar.calendar()) :: t()

Преобразует кортеж 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_gregorian_days(days, calendar \\ Calendar.ISO)Source

@spec from_gregorian_days(integer(), Calendar.calendar()) :: t()

Преобразует количество григорианских дней в структуру Date.

Примеры

iex> Date.from_gregorian_days(1)
~D[0000-01-02]
iex> Date.from_gregorian_days(730_485)
~D[2000-01-01]
iex> Date.from_gregorian_days(-1)
~D[-0001-12-31]

from_iso8601(string, calendar \\ Calendar.ISO)Source

@spec from_iso8601(String.t(), Calendar.calendar()) :: {:ok, t()} | {:error, atom()}

Парсит расширенный формат "Даты", описанный в ISO 8601:2019.

Год, парсируемый этой функцией, ограничен четырьмя цифрами.

Примеры

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, calendar \\ Calendar.ISO)Source

@spec from_iso8601!(String.t(), Calendar.calendar()) :: t()

Парсит расширенный формат "Даты", описанный в ISO 8601:2019.

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

Примеры

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

leap_year?(date)Source

@spec leap_year?(Calendar.date()) :: boolean()

Возвращает true, если год в заданной date является високосным.

Примеры

iex> Date.leap_year?(~D[2000-01-01])
true
iex> Date.leap_year?(~D[2001-01-01])
false
iex> Date.leap_year?(~D[2004-01-01])
true
iex> Date.leap_year?(~D[1900-01-01])
false
iex> Date.leap_year?(~N[2004-01-01 01:23:45])
true

months_in_year(date)Source

@spec months_in_year(Calendar.date()) :: Calendar.month()

Возвращает количество месяцев в заданном date году.

Пример

iex> Date.months_in_year(~D[1900-01-13])
12

new(year, month, day, calendar \\ Calendar.ISO)Source

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

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

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

Примеры

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}

new!(year, month, day, calendar \\ Calendar.ISO)Source

@spec new!(Calendar.year(), Calendar.month(), Calendar.day(), Calendar.calendar()) ::
  t()

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

Ожидает все значения в виде целых чисел. Возвращает date , если каждое значение входит в соответствующий диапазон, вызывает исключение, если дата неверна.

Примеры

iex> Date.new!(2000, 1, 1)
~D[2000-01-01]
iex> Date.new!(2000, 13, 1)
** (ArgumentError) cannot build date, reason: :invalid_date
iex> Date.new!(2000, 2, 29)
~D[2000-02-29]

quarter_of_year(date)Source

@spec quarter_of_year(Calendar.date()) :: non_neg_integer()

Вычисляет квартал года заданной date.

Возвращает день года как целое число. Для календаря ISO 8601 (по умолчанию) — это целое число от 1 до 4.

Примеры

iex> Date.quarter_of_year(~D[2016-10-31])
4
iex> Date.quarter_of_year(~D[2016-01-01])
1
iex> Date.quarter_of_year(~N[2016-04-01 01:23:45])
2
iex> Date.quarter_of_year(~D[-0015-09-30])
3

range(first, last)Source

@spec range(Calendar.date(), Calendar.date()) :: Date.Range.t()

Возвращает диапазон дат.

Диапазон дат представляет собой дискретное количество дат, где первые и последние значения — это даты с совпадающими календарями.

Диапазоны дат могут быть возрастающими (first <= last) и всегда включают крайние значения. Для убывающего диапазона используйте range/3 со значением шага -1 в качестве первого аргумента.

Примеры

iex> Date.range(~D[1999-01-01], ~D[2000-01-01])
Date.range(~D[1999-01-01], ~D[2000-01-01])

Диапазон дат реализует протокол Enumerable, а это значит, что функции модуля Enum могут использоваться для работы с диапазонами:

iex> range = Date.range(~D[2001-01-01], ~D[2002-01-01])
iex> range
Date.range(~D[2001-01-01], ~D[2002-01-01])
iex> Enum.count(range)
366
iex> ~D[2001-02-01] in range
true
iex> Enum.take(range, 3)
[~D[2001-01-01], ~D[2001-01-02], ~D[2001-01-03]]

range(first, last, step)Source

@spec range(Calendar.date(), Calendar.date(), step :: pos_integer() | neg_integer()) ::
  Date.Range.t()

Возвращает диапазон дат с шагом.

Примеры

iex> range = Date.range(~D[2001-01-01], ~D[2002-01-01], 2)
iex> range
Date.range(~D[2001-01-01], ~D[2002-01-01], 2)
iex> Enum.count(range)
183
iex> ~D[2001-01-03] in range
true
iex> Enum.take(range, 3)
[~D[2001-01-01], ~D[2001-01-03], ~D[2001-01-05]]

shift(date, duration)Source

@spec shift(Calendar.date(), Duration.t() | [unit_pair]) :: t()
when unit_pair:
       {:year, integer()}
       | {:month, integer()}
       | {:week, integer()}
       | {:day, integer()}

Сдвигает заданную date на duration в соответствии с ее календарем.

Допустимые единицы измерения: :year, :month, :week, :day.

При использовании календаря ISO по умолчанию длительности сворачиваются и применяются в порядке месяцев, а затем дней:

  • при сдвиге на 1 год и 2 месяца дата фактически сдвигается на 14 месяцев
  • при сдвиге на 2 недели и 3 дня дата сдвигается на 17 дней

При сдвиге на месяц дни округляются вниз до ближайшей допустимой даты.

Вызывает исключение ArgumentError при вызове с единицами измерения времени.

Примеры

iex> Date.shift(~D[2016-01-03], month: 2)
~D[2016-03-03]
iex> Date.shift(~D[2016-01-30], month: -1)
~D[2015-12-30]
iex> Date.shift(~D[2016-01-31], year: 4, day: 1)
~D[2020-02-01]
iex> Date.shift(~D[2016-01-03], Duration.new!(month: 2))
~D[2016-03-03]

# leap years
iex> Date.shift(~D[2024-02-29], year: 1)
~D[2025-02-28]
iex> Date.shift(~D[2024-02-29], year: 4)
~D[2028-02-29]

# rounding down
iex> Date.shift(~D[2015-01-31], month: 1)
~D[2015-02-28]

to_erl(date)Source

@spec to_erl(Calendar.date()) :: :calendar.date()

Преобразует заданную date в кортеж Erlang даты.

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

Примеры

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

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

to_gregorian_days(date)Source

@spec to_gregorian_days(Calendar.date()) :: integer()

Преобразует структуру date в количество григорианских дней.

Примеры

iex> Date.to_gregorian_days(~D[0000-01-02])
1
iex> Date.to_gregorian_days(~D[2000-01-01])
730_485
iex> Date.to_gregorian_days(~N[2000-01-01 00:00:00])
730_485

to_iso8601(date, format \\ :extended)Source

@spec to_iso8601(Calendar.date(), :extended | :basic) :: String.t()

Преобразует заданную date в ISO 8601:2019.

По умолчанию, Date.to_iso8601/2 возвращает даты в формате "extended" для лучшей читаемости. Также поддерживает формат "basic" через опцию :basic.

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

Примеры

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

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

iex> Date.to_iso8601(~N[2000-02-28 00:00:00])
"2000-02-28"

to_string(date)Source

@spec to_string(Calendar.date()) :: String.t()

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

Примеры

iex> Date.to_string(~D[2000-02-28])
"2000-02-28"
iex> Date.to_string(~N[2000-02-28 01:23:45])
"2000-02-28"
iex> Date.to_string(~D[-0100-12-15])
"-0100-12-15"

utc_today(calendar \\ Calendar.ISO)Source

@spec utc_today(Calendar.calendar()) :: t()

Возвращает текущую дату в формате UTC.

Примеры

iex> date = Date.utc_today()
iex> date.year >= 2016
true

year_of_era(date)Source

@spec year_of_era(Calendar.date()) :: {Calendar.year(), non_neg_integer()}

Вычисляет год эры и номер эры для заданного календарного года.

Возвращает кортеж {year, era} , представляющий год в рамках эры и номер эры.

Примеры

iex> Date.year_of_era(~D[0001-01-01])
{1, 1}
iex> Date.year_of_era(~D[0000-12-31])
{1, 0}
iex> Date.year_of_era(~D[-0001-01-01])
{2, 0}

Скачать версию ePub

Создано с помощью ExDoc (v0.36.1) для языка программирования Elixir

© 2012-2024 The Elixir Team
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.18.1/Date.html

Spec-Zone.ru

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