Календарь поведение
Этот модуль определяет обязанности работы с календарями, датами, временем и датами-временами в Elixir.
В настоящее время он определяет типы и минимальную реализацию поведения календаря в Elixir. Цель функций календаря в Elixir — предоставить базу для взаимодействия, а не полную функциональную API для работы с датами и временем.
Для фактических структур дат, времени и дат-времени см. Date, Time, NaiveDateTime и DateTime.
Обратите внимание, что обозначения года, месяца, дня и т. д. избыточны (т. е. целое число вместо 1..12 для месяцев), поскольку разные календари могут иметь разное количество дней в месяце, месяцев в году и т. д.
Краткое описание
Типы
- calendar()
-
Реализация календаря
- date()
-
Любой map/struct, содержащий поля даты
- datetime()
-
Любой map/struct, содержащий поля даты и времени
- day()
- hour()
- microsecond()
-
Микросекунды с сохранённой точностью
- minute()
- month()
- naive_datetime()
-
Любой map/struct, содержащий поля naive_datetime
- second()
-
От 0 до 60 для учёта високосных секунд
- std_offset()
-
Стандартное смещение часового пояса в секундах (не ноль в летнее время)
- time()
-
Любой map/struct, содержащий поля времени
- time_zone()
-
Идентификатор часового пояса согласно базе данных IANA tz (например, Europe/Zurich)
- utc_offset()
-
Смещение часового пояса по UTC в секундах
- year()
- zone_abbr()
-
Аббревиатура часового пояса (например, CET или CEST или BST и т. д.)
Обратные вызовы
- 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 - days_in_month(year, month)
-
Возвращает количество дней в заданном году-месяце
- leap_year?(year)
-
Возвращает true, если заданный год високосный
- naive_datetime_to_string(year, month, day, hour, minute, second, microsecond)
-
Преобразует дату и время (без часового пояса) в строку в соответствии с календарём
Типы
calendar()
calendar() :: module()
Реализация календаря
date()
date() :: %{optional(any()) => any(), :calendar => calendar(), :year => year(), :month => month(), :day => day()} Любой map/struct, содержащий поля даты
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()} Любой map/struct, содержащий поля даты и времени
day()
day() :: integer()
hour()
hour() :: 0..23
microsecond()
microsecond() :: {0..999999, 0..6} Микросекунды с сохранённой точностью.
Точность представляет собой количество цифр, которые должны быть использованы при представлении микросекунд во внешнем формате. Если точность равна 0, это означает, что микросекунды должны быть пропущены.
minute()
minute() :: 0..59
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()} Любой map/struct, содержащий поля naive_datetime
second()
second() :: 0..60
От 0 до 60 для учёта високосных секунд
std_offset()
std_offset() :: integer()
Стандартное смещение часового пояса в секундах (не ноль в летнее время)
time()
time() :: %{optional(any()) => any(), :hour => hour(), :minute => minute(), :second => second(), :microsecond => microsecond()} Любой map/struct, содержащий поля времени
time_zone()
time_zone() :: String.t()
Идентификатор часового пояса согласно базе данных IANA tz (например, Europe/Zurich)
utc_offset()
utc_offset() :: integer()
Смещение часового пояса по UTC в секундах
year()
year() :: integer()
zone_abbr()
zone_abbr() :: String.t()
Аббревиатура часового пояса (например, CET или CEST или BST и т. д.)
Обратные вызовы
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.
days_in_month(year, month)
days_in_month(year(), month()) :: day()
Возвращает количество дней в заданном году-месяце.
leap_year?(year)
leap_year?(year()) :: boolean()
Возвращает true, если заданный год високосный.
Високосный год — это год, длина которого больше обычной. Точное значение зависит от календаря. Календарь должен вернуть false если он не поддерживает понятие високосных годов.
naive_datetime_to_string(year, month, day, hour, minute, second, microsecond)
naive_datetime_to_string(year(), month(), day(), hour(), minute(), second(), microsecond()) :: String.t()
Преобразует дату и время (без часового пояса) в строку в соответствии с календарём.
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.4.5/Calendar.html