База данных часовых поясов Calendar.TimeZoneDatabase поведение
Этот модуль определяет поведение для предоставления данных о часовых поясах.
IANA предоставляет данные о часовых поясах, которые включают данные о различных смещениях UTC и стандартных смещениях для часовых поясов.
Краткое описание
Типы
- time_zone_period()
Период, в течение которого действует определенная комбинация смещения UTC, стандартного смещения и сокращения названия часового пояса.
- time_zone_period_limit()
Предел, до которого начинается или заканчивается определенный период часового пояса.
Обработчики событий
- time_zone_period_from_utc_iso_days(arg1, arg2)
Период часового пояса для определённого момента времени в UTC для конкретного часового пояса.
- time_zone_periods_from_wall_datetime(arg1, arg2)
Возможные периоды часового пояса для определенного часового пояса и времени по местному времени.
Типы
time_zone_period()
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()
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.
Начало или конец некоторых периодов являются бесконечными. Например, последний период для часовых поясов без DST или планов по изменению. Однако для целей этого поведения они используются только для пробелов во времени по местному времени, где необходимые пределы периода заданы в определённое время.
Обработчики событий
time_zone_period_from_utc_iso_days(arg1, arg2)
(с версии 1.8.0)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(arg1, arg2)
(с версии 1.8.0)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, возвращается кортеж с :single и time_zone_period.
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.8.2/Calendar.TimeZoneDatabase.html