Spec-Zone.ru › Elixir 1.17

Источник 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()Источник

@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, когда действует летнее/почтовое время (daylight saving time) и оно длится с весны до осени. Осенью std_offset изменяется вместе с zone_abbr, поэтому для зимы необходим другой период.

time_zone_period_limit()Источник

@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.

Начало или конец некоторых периодов могут быть бесконечными, например, для часовых поясов без DST или без планов по изменению. Однако в рамках этого поведения они используются только для пробелов во времени, где необходимые пределы периодов находятся в определённое время.

Обработка вызовов

time_zone_period_from_utc_iso_days(iso_days, time_zone)Источник

@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)Источник

@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}

Возможные периоды часового пояса для определённого часового пояса и даты и времени по часам.

Если предоставленное время без учета часового пояса неоднозначно, возвращается кортеж с :ambiguous и двумя возможными периодами. Периоды в кортеже должны быть отсортированы, начиная с первого, который начинается раньше.

Если предоставленное время без учета часового пояса находится в промежутке, например, во время «перевода часов» с зимнего на летнее время, возвращается кортеж с :gap и двумя периодами с ограничениями во вложенном кортеже. Первый вложенный кортеж из двух элементов — период до промежутка и время без учета часового пояса с ограничением по окончанию периода (время по часам). Второй вложенный кортеж из двух элементов — период сразу после промежутка и время без учета часового пояса (время по часам) для начала периода сразу после промежутка.

Если для предоставленного datetime существует только один возможный период, возвращается кортеж с :ok и time_zone_period.

Скачать версию ePub

Создано с помощью ExDoc (v0.34.1) для языка программирования Elixir

© 2012-2024 The Elixir Team
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.17.2/Calendar.TimeZoneDatabase.html

Spec-Zone.ru

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