Calendar.TimeZoneDatabase поведение
Этот модуль определяет поведение для предоставления данных о часовых поясах.
IANA предоставляет данные о часовых поясах, которые включают данные о различных смещениях UTC и стандартных смещениях для часовых поясов.
Краткое описание
Типы
- time_zone_period()
Период, в котором действует определённая комбинация смещения UTC, стандартного смещения и сокращения зоны.
- time_zone_period_limit()
Предел, до которого начинается или заканчивается определённый период часового пояса.
Обработчики
- time_zone_period_from_utc_iso_days(iso_days, time_zone)
Период часового пояса для определённой точки времени в UTC для конкретного часового пояса.
- time_zone_periods_from_wall_datetime(naive_datetime, time_zone)
Возможные периоды часового пояса для определённого часового пояса и даты и времени по местному времени.
Типы
time_zone_period()Source
@type time_zone_period() :: %{
optional(any()) => any(),
utc_offset: Calendar.utc_offset(),
std_offset: Calendar.std_offset(),
zone_abbr: Calendar.zone_abbr()
} Период, в котором действует определённая комбинация смещения UTC, стандартного смещения и сокращения зоны.
Например, один период может быть летом 2018 года в "Europe/London", где действует летнее время / летнее время и длится со весны до осени. Осенью std_offset меняется вместе с zone_abbr, поэтому для зимы нужен другой период.
time_zone_period_limit()Source
@type time_zone_period_limit() :: Calendar.naive_datetime()
Предел, до которого начинается или заканчивается определённый период часового пояса.
Начало включительно. Окончание исключающее. Например, если период с 2015-03-29 01:00:00 до 2015-10-25 01:00:00, период включает и начинается с начала 2015-03-29 01:00:00 и длится до момента перед 2015-10-25 01:00:00.
Начало или конец некоторых периодов бесконечны. Например, для часовых поясов без летнего времени или планов изменений. Однако для целей этого поведения они используются только для пробелов во времени по местному времени, где требуемые ограничения периодов задаются в определённое время.
Обработчики
time_zone_period_from_utc_iso_days(iso_days, time_zone)Source
@callback time_zone_period_from_utc_iso_days(Calendar.iso_days(), Calendar.time_zone()) ::
{:ok, time_zone_period()}
| {:error, :time_zone_not_found | :utc_only_time_zone_database} Период часового пояса для определённой точки времени в UTC для конкретного часового пояса.
Принимает имя часового пояса и точку во времени для UTC и возвращает time_zone_period для этой точки во времени.
time_zone_periods_from_wall_datetime(naive_datetime, time_zone)Source
@callback time_zone_periods_from_wall_datetime(
Calendar.naive_datetime(),
Calendar.time_zone()
) ::
{:ok, time_zone_period()}
| {:ambiguous, time_zone_period(), time_zone_period()}
| {:gap, {time_zone_period(), time_zone_period_limit()},
{time_zone_period(), time_zone_period_limit()}}
| {:error, :time_zone_not_found | :utc_only_time_zone_database} Возможные периоды часового пояса для определённого часового пояса и даты и времени по местному времени.
Если предоставленное datetime неоднозначно, кортеж с :ambiguous и двумя возможными периодами. Периоды в списке отсортированы, причём первый элемент - тот, который начинается раньше.
Если предоставленное datetime находится в разрыве - например, во время "перевода часов" при переходе от зимнего к летнему времени, возвращается кортеж с :gap и двумя периодами с ограничениями вложенными в кортеж. Первый вложенный кортеж из двух элементов - период перед разрывом и время по местному времени с ограничением, когда заканчивается период (время по местному времени). Второй вложенный кортеж из двух элементов - период сразу после разрыва и время по местному времени, когда начинается период сразу после разрыва.
Если для предоставленного datetime существует только один возможный период, возвращается кортеж с :ok и time_zone_period.
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.14.1/Calendar.TimeZoneDatabase.html