Spec-Zone.ru › Elixir 1.13

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.13.4/Calendar.TimeZoneDatabase.html

Spec-Zone.ru

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