Spec-Zone.ru › Elixir 1.8

Calendar.ISO

Реализация календаря, соответствующая ISO 8601.

Этот календарь реализует пролептический григорианский календарь и, следовательно, совместим с календарём, используемым в большинстве стран сегодня. Пролептический означает, что правила григорианского календаря для високосных лет применяются для всего времени, следовательно, даты дают разные результаты до 1583 года, когда был принят григорианский календарь.

Обратите внимание, что, хотя ISO 8601 допускает указание времени и даты и времени в формате 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_era(year, month, day)

Вычисляет день и эру из заданных year, month, и day.

day_of_week(year, month, day)

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

day_of_year(year, month, day)

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

day_rollover_relative_to_midnight_utc()

См. Calendar.day_rollover_relative_to_midnight_utc/0 для документации.

days_in_month(year, month)

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

leap_year?(year)

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

months_in_year(year)

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

naive_datetime_from_iso_days(arg)

Преобразует формат Calendar.iso_days/0 в формат даты и времени, заданный этим календарём.

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

Возвращает формат Calendar.iso_days/0 указанной даты.

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

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

quarter_of_year(year, month, day)

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

time_from_day_fraction(arg)

Преобразует дробь дня в представление времени этого календаря.

time_to_day_fraction(hour, minute, second, arg)

Возвращает нормализованную дробь дня указанного времени.

time_to_string(hour, minute, second, microsecond)

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

time_to_string(hour, minute, second, arg, format)
valid_date?(year, month, day)

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

valid_time?(hour, minute, second, arg)

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

year_of_era(year)

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

Типы

day()

day() :: 1..31

month()

month() :: 1..12

year()

year() :: -9999..9999

Функции

date_to_string(year, month, day)

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

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

Примеры

iex> Calendar.ISO.date_to_string(2015, 2, 28)
"2015-02-28"
iex> Calendar.ISO.date_to_string(2017, 8, 1)
"2017-08-01"
iex> Calendar.ISO.date_to_string(-99, 1, 31)
"-0099-01-31"

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

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

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

Примеры

iex> time_zone = "Europe/Berlin"
iex> Calendar.ISO.datetime_to_string(2017, 8, 1, 1, 2, 3, {4, 5}, time_zone, "CET", 3600, 0)
"2017-08-01 01:02:03.00000+01:00 CET Europe/Berlin"
iex> Calendar.ISO.datetime_to_string(2017, 8, 1, 1, 2, 3, {4, 5}, time_zone, "CDT", 3600, 3600)
"2017-08-01 01:02:03.00000+02:00 CDT Europe/Berlin"

iex> time_zone = "America/Los_Angeles"
iex> Calendar.ISO.datetime_to_string(2015, 2, 28, 1, 2, 3, {4, 5}, time_zone, "PST", -28800, 0)
"2015-02-28 01:02:03.00000-08:00 PST America/Los_Angeles"
iex> Calendar.ISO.datetime_to_string(2015, 2, 28, 1, 2, 3, {4, 5}, time_zone, "PDT", -28800, 3600)
"2015-02-28 01:02:03.00000-07:00 PDT America/Los_Angeles"

day_of_era(year, month, day)

(с версии 1.8.0)
day_of_era(year(), month(), day()) :: {day :: pos_integer(), era :: 0..1}

Вычисляет день и эру из заданных year, month, и day.

Примеры

iex> Calendar.ISO.day_of_era(0, 1, 1)
{366, 0}
iex> Calendar.ISO.day_of_era(1, 1, 1)
{1, 1}
iex> Calendar.ISO.day_of_era(0, 12, 31)
{1, 0}
iex> Calendar.ISO.day_of_era(0, 12, 30)
{2, 0}
iex> Calendar.ISO.day_of_era(-1, 12, 31)
{367, 0}

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, 1)
2
iex> Calendar.ISO.day_of_week(2016, 11, 2)
3
iex> Calendar.ISO.day_of_week(2016, 11, 3)
4
iex> Calendar.ISO.day_of_week(2016, 11, 4)
5
iex> Calendar.ISO.day_of_week(2016, 11, 5)
6
iex> Calendar.ISO.day_of_week(2016, 11, 6)
7
iex> Calendar.ISO.day_of_week(-99, 1, 31)
4

day_of_year(year, month, day)

(с версии 1.8.0)
day_of_year(year(), month(), day()) :: 1..366

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

Это целое число от 1 до 366.

Примеры

iex> Calendar.ISO.day_of_year(2016, 1, 31)
31
iex> Calendar.ISO.day_of_year(-99, 2, 1)
32
iex> Calendar.ISO.day_of_year(2018, 2, 28)
59

day_rollover_relative_to_midnight_utc()

(с версии 1.5.0)
day_rollover_relative_to_midnight_utc() :: {0, 1}

См. 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
iex> Calendar.ISO.days_in_month(-1, 5)
31

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
iex> Calendar.ISO.leap_year?(-4)
true

months_in_year(year)

(с версии 1.7.0)
months_in_year(year()) :: 12

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

Пример

iex> Calendar.ISO.months_in_year(2004)
12

naive_datetime_from_iso_days(arg)

(с версии 1.5.0)
naive_datetime_from_iso_days(Calendar.iso_days()) ::
  {Calendar.year(), Calendar.month(), Calendar.day(), Calendar.hour(),
   Calendar.minute(), Calendar.second(), Calendar.microsecond()}

Преобразует формат Calendar.iso_days/0 в формат даты и времени, заданный этим календарём.

Примеры

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({730_485, {0, 86400}})
{2000, 1, 1, 0, 0, 0, {0, 6}}
iex> Calendar.ISO.naive_datetime_from_iso_days({730_485, {43200, 86400}})
{2000, 1, 1, 12, 0, 0, {0, 6}}
iex> Calendar.ISO.naive_datetime_from_iso_days({-365, {0, 86400000000}})
{-1, 1, 1, 0, 0, 0, {0, 6}}

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

(с версии 1.5.0)
naive_datetime_to_iso_days(
  Calendar.year(),
  Calendar.month(),
  Calendar.day(),
  Calendar.hour(),
  Calendar.minute(),
  Calendar.second(),
  Calendar.microsecond()
) :: Calendar.iso_days()

Возвращает формат Calendar.iso_days/0 указанной даты.

Примеры

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}}
iex> Calendar.ISO.naive_datetime_to_iso_days(-1, 1, 1, 0, 0, 0, {0, 6})
{-365, {0, 86400000000}}

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

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

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

Примеры

iex> Calendar.ISO.naive_datetime_to_string(2015, 2, 28, 1, 2, 3, {4, 6})
"2015-02-28 01:02:03.000004"
iex> Calendar.ISO.naive_datetime_to_string(2017, 8, 1, 1, 2, 3, {4, 5})
"2017-08-01 01:02:03.00000"

quarter_of_year(year, month, day)

(с версии 1.8.0)
quarter_of_year(year(), month(), day()) :: 1..4

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

Это целое число от 1 до 4.

Примеры

iex> Calendar.ISO.quarter_of_year(2016, 1, 31)
1
iex> Calendar.ISO.quarter_of_year(2016, 4, 3)
2
iex> Calendar.ISO.quarter_of_year(-99, 9, 31)
3
iex> Calendar.ISO.quarter_of_year(2018, 12, 28)
4

time_from_day_fraction(arg)

(с версии 1.5.0)
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)

(с версии 1.5.0)
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)

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

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

Примеры

iex> Calendar.ISO.time_to_string(2, 2, 2, {2, 6})
"02:02:02.000002"
iex> Calendar.ISO.time_to_string(2, 2, 2, {2, 2})
"02:02:02.00"
iex> Calendar.ISO.time_to_string(2, 2, 2, {2, 0})
"02:02:02"

time_to_string(hour, minute, second, arg, format)

valid_date?(year, month, day)

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

Определяет, является ли заданная дата действительной в соответствии с пролептическим григорианским календарем.

Примеры

iex> Calendar.ISO.valid_date?(2015, 2, 28)
true
iex> Calendar.ISO.valid_date?(2015, 2, 30)
false
iex> Calendar.ISO.valid_date?(-1, 12, 31)
true
iex> Calendar.ISO.valid_date?(-1, 12, 32)
false

valid_time?(hour, minute, second, arg)

(since 1.5.0)
valid_time?(
  Calendar.hour(),
  Calendar.minute(),
  Calendar.second(),
  Calendar.microsecond()
) :: boolean()

Определяет, является ли заданная дата действительной в соответствии с пролептическим григорианским календарем.

Обратите внимание, что, хотя ISO 8601 допускает указание времени как 24:00:00 для нулевого часа следующего дня, это обозначение не поддерживается Elixir. Високосные секунды также не поддерживаются встроенным Calendar.ISO.

Примеры

iex> Calendar.ISO.valid_time?(10, 50, 25, {3006, 6})
true
iex> Calendar.ISO.valid_time?(23, 59, 60, {0, 0})
false
iex> Calendar.ISO.valid_time?(24, 0, 0, {0, 0})
false

year_of_era(year)

(since 1.8.0)
year_of_era(year()) :: {year(), era :: 0..1}

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

ISO-календарь имеет две эры: текущую эру, которая начинается в 1 году и определяется как эра "1". И вторую эру для тех лет, которые меньше 1, определяется как эра "0".

Примеры

iex> Calendar.ISO.year_of_era(1)
{1, 1}
iex> Calendar.ISO.year_of_era(2018)
{2018, 1}
iex> Calendar.ISO.year_of_era(0)
{1, 0}
iex> Calendar.ISO.year_of_era(-1)
{2, 0}

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

Spec-Zone.ru

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