Spec-Zone.ru › Elixir 1.6

Календарь поведение

Этот модуль определяет обязанности работы с календарями, датами, временем и датами и временем в Elixir.

В настоящее время он определяет типы и минимальную реализацию поведения календаря в Elixir. Цель функций календаря в Elixir — предоставить базу для межсетевого взаимодействия вместо полнофункционального API даты и времени.

Для фактических структур даты, времени и даты и времени см. Date, Time, NaiveDateTime и DateTime.

Обратите внимание, что обозначения года, месяца, дня и т. д. избыточны (т. е. целое число вместо 1..12 для месяцев), так как разные календари могут иметь разное количество дней в месяце, месяцев в году и так далее.

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

Типы

calendar()

Реализация календаря

date()

Любой массив/структура, содержащий поля даты

datetime()

Любой массив/структура, содержащий поля даты и времени

day()
day_fraction()

Внутренний формат времени используется при преобразовании между календарями

hour()
iso_days()

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

microsecond()

Микросекунды с сохраненной точностью

minute()
month()
naive_datetime()

Любой массив/структура, содержащий поля naive_datetime

second()
std_offset()

Стандартное смещение часового пояса в секундах (не ноль в летнее время)

time()

Любой массив/структура, содержащий поля времени

time_zone()

Идентификатор часового пояса согласно базе данных часовых поясов IANA (например, Europe/Zurich)

utc_offset()

Смещение часового пояса по UTC в секундах

year()
zone_abbr()

Сокращение часового пояса (например, CET или CEST или BST и т. д.)

Функции

compatible_calendars?(calendar, calendar)

Возвращает true , если у двух календарей одинаковый момент начала нового дня, false в противном случае

truncate(microsecond_tuple, atom)

Возвращает кортеж микросекунд, усеченный до заданной точности (:microsecond, :millisecond или :second)

Обработчики

date_to_string(year, month, day)

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

datetime_to_string(year, month, day, hour, minute, second, microsecond, time_zone, zone_abbr, utc_offset, std_offset)

Преобразует дату и время (с часовым поясом) в строку в соответствии с календарем

day_of_week(year, month, day)

Вычисляет день недели из заданного year, month, и day

day_rollover_relative_to_midnight_utc()

Определите момент перехода для данного календаря

days_in_month(year, month)

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

leap_year?(year)

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

naive_datetime_from_iso_days(iso_days)

Преобразует t:iso_days в формат даты и времени календаря

naive_datetime_to_iso_days(year, month, day, hour, minute, second, microsecond)

Преобразует заданную дату и время (с часовым поясом) в формат t:iso_days

naive_datetime_to_string(year, month, day, hour, minute, second, microsecond)

Преобразует дату и время (без часового пояса) в строку в соответствии с календарем

time_from_day_fraction(day_fraction)

Преобразует t:day_fraction в формат времени календаря

time_to_day_fraction(hour, minute, second, microsecond)

Преобразует заданное время в формат t:day_fraction

time_to_string(hour, minute, second, microsecond)

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

valid_date?(year, month, day)

Должен вернуть true , если заданная дата описывает корректную дату в календаре

valid_time?(hour, minute, second, microsecond)

Должен вернуть true , если заданное время описывает корректное время в календаре

Типы

calendar()

calendar() :: module()

Реализация календаря

date()

date() :: %{
  optional(any()) => any(),
  :calendar => calendar(),
  :year => year(),
  :month => month(),
  :day => day()
}

Любой массив/структура, содержащий поля даты

datetime()

datetime() :: %{
  optional(any()) => any(),
  :calendar => calendar(),
  :year => year(),
  :month => month(),
  :day => day(),
  :hour => hour(),
  :minute => minute(),
  :second => second(),
  :microsecond => microsecond(),
  :time_zone => time_zone(),
  :zone_abbr => zone_abbr(),
  :utc_offset => utc_offset(),
  :std_offset => std_offset()
}

Любой массив/структура, содержащий поля даты и времени

day()

day() :: integer()

day_fraction()

day_fraction() ::
  {parts_in_day :: non_neg_integer(), parts_per_day :: pos_integer()}

Внутренний формат времени используется при преобразовании между календарями.

Он представляет время как долю дня (начиная с полуночи). parts_in_day указывает, сколько дня уже прошло, а parts_per_day обозначает, сколько частей в нем укладывается за день.

hour()

hour() :: integer()

iso_days()

iso_days() :: {days :: integer(), day_fraction()}

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

Это количество дней, включая дробную часть, прошедших с 0000-01-01+00:00T00:00.00000 в формате ISO 8601 (также известный как полночь 1 января до нашей эры 1 пролептического григорианского календаря).

parts_per_day представляет, на сколько подчастей подразделяется текущий день (для разных календарей может иметь смысл выбрать другую parts_per_day). parts_in_day представляет, сколько из этих parts_per_day прошло в последний день.

microsecond()

microsecond() :: {0..999_999, 0..6}

Микросекунды с сохраненной точностью.

Точность представляет количество цифр, которые необходимо использовать при представлении микросекунд во внешнем формате. Если точность равна 0, это означает, что микросекунды должны быть пропущены.

minute()

minute() :: integer()

month()

month() :: integer()

naive_datetime()

naive_datetime() :: %{
  optional(any()) => any(),
  :calendar => calendar(),
  :year => year(),
  :month => month(),
  :day => day(),
  :hour => hour(),
  :minute => minute(),
  :second => second(),
  :microsecond => microsecond()
}

Любой массив/структура, содержащий поля naive_datetime

second()

second() :: integer()

std_offset()

std_offset() :: integer()

Стандартное смещение часового пояса в секундах (не ноль в летнее время)

time()

time() :: %{
  optional(any()) => any(),
  :hour => hour(),
  :minute => minute(),
  :second => second(),
  :microsecond => microsecond()
}

Любой массив/структура, содержащий поля времени

time_zone()

time_zone() :: String.t()

Идентификатор часового пояса согласно базе данных часовых поясов IANA (например, Europe/Zurich)

utc_offset()

utc_offset() :: integer()

Смещение часового пояса по UTC в секундах

year()

year() :: integer()

zone_abbr()

zone_abbr() :: String.t()

Сокращение часового пояса (например, CET или CEST или BST и т. д.)

Функции

compatible_calendars?(calendar, calendar)

compatible_calendars?(Calendar.calendar(), Calendar.calendar()) :: boolean()

Возвращает true , если у двух календарей одинаковый момент начала нового дня, false в противном случае.

Если два календаря несовместимы, мы можем преобразовывать только даты и время между ними. Если они совместимы, это означает, что мы также можем преобразовывать даты, а также неявные даты и время между ними.

truncate(microsecond_tuple, atom)

truncate(Calendar.microsecond(), :microsecond | :millisecond | :second) ::
  Calendar.microsecond()

Возвращает кортеж микросекунд, усечённый до заданной точности (:microsecond, :millisecond или :second).

Обратные вызовы

date_to_string(year, month, day)

date_to_string(year(), month(), day()) :: String.t()

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

datetime_to_string(year, month, day, hour, minute, second, microsecond, time_zone, zone_abbr, utc_offset, std_offset)

datetime_to_string(
  year(),
  month(),
  day(),
  hour(),
  minute(),
  second(),
  microsecond(),
  time_zone(),
  zone_abbr(),
  utc_offset(),
  std_offset()
) :: String.t()

Преобразует дату и время (со временем зоны) в строку в соответствии с календарём.

day_of_week(year, month, day)

day_of_week(year(), month(), day()) :: non_neg_integer()

Вычисляет день недели из заданного year, month, и day.

day_rollover_relative_to_midnight_utc()

day_rollover_relative_to_midnight_utc() :: day_fraction()

Определяет момент перехода для данного календаря.

Это момент в вашем календаре, когда текущий день заканчивается и начинается следующий.

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

Эта доля дня должна быть представлена в максимально упрощённой форме для ускорения сравнений.

Примеры

  • Если в вашем календаре новый день начинается в полночь, верните {0, 1}.
  • Если в вашем календаре новый день начинается на восходе солнца, верните {1, 4}.
  • Если в вашем календаре новый день начинается в полдень, верните {1, 2}.
  • Если в вашем календаре новый день начинается на закате солнца, верните {3, 4}.

days_in_month(year, month)

days_in_month(year(), month()) :: day()

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

leap_year?(year)

leap_year?(year()) :: boolean()

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

Високосный год — это год, продолжительность которого больше обычной. Точное значение зависит от календаря. Календарь должен вернуть false если он не поддерживает концепцию високосных лет.

naive_datetime_from_iso_days(iso_days)

naive_datetime_from_iso_days(iso_days()) ::
  {year(), month(), day(), hour(), minute(), second(), microsecond()}

Преобразует t:iso_days в формат даты и времени календаря.

naive_datetime_to_iso_days(year, month, day, hour, minute, second, microsecond)

naive_datetime_to_iso_days(
  year(),
  month(),
  day(),
  hour(),
  minute(),
  second(),
  microsecond()
) :: iso_days()

Преобразует заданную дату и время (без времени зоны) в формат t:iso_days.

naive_datetime_to_string(year, month, day, hour, minute, second, microsecond)

naive_datetime_to_string(
  year(),
  month(),
  day(),
  hour(),
  minute(),
  second(),
  microsecond()
) :: String.t()

Преобразует дату и время (без времени зоны) в строку в соответствии с календарём.

time_from_day_fraction(day_fraction)

time_from_day_fraction(day_fraction()) ::
  {hour(), minute(), second(), microsecond()}

Преобразует t:day_fraction в формат времени календаря.

time_to_day_fraction(hour, minute, second, microsecond)

time_to_day_fraction(hour(), minute(), second(), microsecond()) ::
  day_fraction()

Преобразует заданное время в формат t:day_fraction.

time_to_string(hour, minute, second, microsecond)

time_to_string(hour(), minute(), second(), microsecond()) :: String.t()

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

valid_date?(year, month, day)

valid_date?(year(), month(), day()) :: boolean()

Должно вернуть true, если заданная дата описывает корректную дату в календаре.

valid_time?(hour, minute, second, microsecond)

valid_time?(hour(), minute(), second(), microsecond()) :: boolean()

Должно вернуть true, если заданное время описывает корректное время в календаре.

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

Spec-Zone.ru

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