Calendar.ISO
Реализация календаря, следующая ISO8601.
Этот календарь реализует пролептический григорианский календарь и поэтому совместим с календарём, используемым в большинстве стран сегодня. Пролептический означает, что григорианские правила для високосных лет применяются для всех времён, в результате чего даты дают разные результаты до года 1583, с момента принятия григорианского календаря.
Обратите внимание, что, хотя ISO8601 позволяет времени и датам указывать 24:00:00 как нулевой час следующего дня, такая запись не поддерживается Elixir.
Краткое описание
Типы
- day()
- month()
- year()
Функции
- 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)
-
Возвращает, является ли заданный год високосным
- naive_datetime_from_iso_days(arg)
-
Преобразует формат
t:Calendar.iso_daysв формат даты и времени, заданный этим календарём - naive_datetime_to_iso_days(year, month, day, hour, minute, second, microsecond)
-
Возвращает формат
t:Calendar.iso_daysуказанной даты - naive_datetime_to_string(year, month, day, hour, minute, second, microsecond)
-
Преобразует дату и время (без часового пояса) в строку
- time_from_day_fraction(arg)
-
Преобразует дробную часть дня в представление времени данного календаря
- time_to_day_fraction(hour, minute, second, arg)
-
Возвращает нормализованную дробную часть дня указанного времени
- time_to_string(hour, minute, second, microsecond, format \\ :extended)
-
Преобразует заданное время в строку
- valid_date?(year, month, day)
-
Должно вернуть
trueесли заданная дата описывает корректную дату в календаре - valid_time?(hour, minute, second, arg)
-
Должно вернуть
trueесли заданное время описывает корректное время в календаре
Типы
day()
day() :: 1..31
month()
month() :: 1..12
year()
year() :: 0..9999
Функции
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)
day_of_week(year(), month(), day()) :: 1..7
Вычисляет день недели из заданных year, month, и day.
Это целое число от 1 до 7, где 1 — понедельник, а 7 — воскресенье.
Примеры
iex> Calendar.ISO.day_of_week(2016, 10, 31) 1 iex> Calendar.ISO.day_of_week(2016, 11, 01) 2 iex> Calendar.ISO.day_of_week(2016, 11, 02) 3 iex> Calendar.ISO.day_of_week(2016, 11, 03) 4 iex> Calendar.ISO.day_of_week(2016, 11, 04) 5 iex> Calendar.ISO.day_of_week(2016, 11, 05) 6 iex> Calendar.ISO.day_of_week(2016, 11, 06) 7
day_rollover_relative_to_midnight_utc()
Определяет момент перехода для данного календаря.
Это момент в вашем календаре, когда заканчивается текущий день и начинается следующий.
Результат этой функции используется для проверки, переходят ли два календаря в один и тот же момент суток. Если нет, мы можем преобразовывать только даты и время между ними. Если да, это означает, что мы также можем преобразовывать даты и наивные даты и время между ними.
Эта дробная часть дня должна быть представлена в максимально упрощенном виде, чтобы ускорить сравнения.
Примеры
- Если в вашем календаре новый день начинается в полночь, верните {0, 1}.
- Если в вашем календаре новый день начинается в рассвет, верните {1, 4}.
- Если в вашем календаре новый день начинается в полдень, верните {1, 2}.
- Если в вашем календаре новый день начинается в закат, верните {3, 4}.
Реализация обратного вызова для Calendar.day_rollover_relative_to_midnight_utc/0.
days_in_month(year, month)
days_in_month(year(), month()) :: 28..31
Возвращает количество дней в заданном месяце-году.
Примеры
iex> Calendar.ISO.days_in_month(1900, 1) 31 iex> Calendar.ISO.days_in_month(1900, 2) 28 iex> Calendar.ISO.days_in_month(2000, 2) 29 iex> Calendar.ISO.days_in_month(2001, 2) 28 iex> Calendar.ISO.days_in_month(2004, 2) 29 iex> Calendar.ISO.days_in_month(2004, 4) 30
leap_year?(year)
leap_year?(year()) :: boolean()
Возвращает, является ли заданный год високосным.
Примеры
iex> Calendar.ISO.leap_year?(2000) true iex> Calendar.ISO.leap_year?(2001) false iex> Calendar.ISO.leap_year?(2004) true iex> Calendar.ISO.leap_year?(1900) false
naive_datetime_from_iso_days(arg)
naive_datetime_from_iso_days(Calendar.iso_days()) :: {Calendar.year(), Calendar.month(), Calendar.day(), Calendar.hour(), Calendar.minute(), Calendar.second(), Calendar.microsecond()} Преобразует формат t:Calendar.iso_days в формат даты и времени, заданный этим календарём.
Примеры
iex> Calendar.ISO.naive_datetime_from_iso_days({0, {0, 86400}})
{0, 1, 1, 0, 0, 0, {0, 6}}
iex> Calendar.ISO.naive_datetime_from_iso_days({730485, {0, 86400}})
{2000, 1, 1, 0, 0, 0, {0, 6}}
iex> Calendar.ISO.naive_datetime_from_iso_days({730485, {43200, 86400}})
{2000, 1, 1, 12, 0, 0, {0, 6}} naive_datetime_to_iso_days(year, month, day, hour, minute, second, microsecond)
naive_datetime_to_iso_days(Calendar.year(), Calendar.month(), Calendar.day(), Calendar.hour(), Calendar.minute(), Calendar.second(), Calendar.microsecond()) :: Calendar.iso_days()
Возвращает формат t:Calendar.iso_days указанной даты.
Примеры
iex> Calendar.ISO.naive_datetime_to_iso_days(0, 1, 1, 0, 0, 0, {0, 6})
{0, {0, 86400000000}}
iex> Calendar.ISO.naive_datetime_to_iso_days(2000, 1, 1, 12, 0, 0, {0, 6})
{730485, {43200000000, 86400000000}}
iex> Calendar.ISO.naive_datetime_to_iso_days(2000, 1, 1, 13, 0, 0, {0, 6})
{730485, {46800000000, 86400000000}} naive_datetime_to_string(year, month, day, hour, minute, second, microsecond)
Преобразует дату и время (без часового пояса) в строку.
time_from_day_fraction(arg)
time_from_day_fraction(Calendar.day_fraction()) :: {Calendar.hour(), Calendar.minute(), Calendar.second(), Calendar.microsecond()} Преобразует дробную часть дня в представление времени данного календаря.
Примеры
iex> Calendar.ISO.time_from_day_fraction({1,2})
{12, 0, 0, {0, 6}}
iex> Calendar.ISO.time_from_day_fraction({13,24})
{13, 0, 0, {0, 6}} time_to_day_fraction(hour, minute, second, arg)
time_to_day_fraction(Calendar.hour(), Calendar.minute(), Calendar.second(), Calendar.microsecond()) :: Calendar.day_fraction()
Возвращает нормализованную дробную часть дня указанного времени.
Примеры
iex> Calendar.ISO.time_to_day_fraction(0, 0, 0, {0, 6})
{0, 86400000000}
iex> Calendar.ISO.time_to_day_fraction(12, 34, 56, {123, 6})
{45296000123, 86400000000} time_to_string(hour, minute, second, microsecond, format \\ :extended)
Преобразует заданное время в строку.
valid_date?(year, month, day)
Должно вернуть true если заданная дата описывает корректную дату в календаре.
Реализация обратного вызова для Calendar.valid_date?/3.
valid_time?(hour, minute, second, arg)
Должно вернуть true если заданное время описывает корректное время в календаре.
Реализация обратного вызова для Calendar.valid_time?/4.
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.5.3/Calendar.ISO.html