Spec-Zone.ru › Ruby 3.2

Часовые пояса

Спецификаторы часовых поясов

Определенные методы Time принимают аргументы, определяющие часовой пояс:

  • Time.at: ключевой аргумент in:.

  • Time.new: позиционный аргумент zone или ключевой аргумент in:.

  • Time.now: ключевой аргумент in:.

  • Time#getlocal: позиционный аргумент zone.

  • Time#localtime: позиционный аргумент zone.

Передаваемое значение в любом из этих случаев должно быть одним из следующих (каждое подробно описано ниже):

  • Смещение по часам/минутам.

  • Смещение с одной буквой.

  • Смещение в секундах.

  • Объект часового пояса.

Смещения по часам/минутам

Значение зоны может быть строковым смещением от UTC в формате '+HH:MM' или '-HH:MM', где:

  • HH — двузначная цифра часа в диапазоне 0..23.

  • MM — двузначная цифра минуты в диапазоне 0..59.

Примеры:

t = Time.utc(2000, 1, 1, 20, 15, 1) # => 2000-01-01 20:15:01 UTC
Time.at(t, in: '-23:59')            # => 1999-12-31 20:16:01 -2359
Time.at(t, in: '+23:59')            # => 2000-01-02 20:14:01 +2359

Смещения с одной буквой

Значение зоны может быть буквой в диапазоне 'A'..'I' или 'K'..'Z'; см. Список военных часовых поясов:

t = Time.utc(2000, 1, 1, 20, 15, 1) # => 2000-01-01 20:15:01 UTC
Time.at(t, in: 'A')                 # => 2000-01-01 21:15:01 +0100
Time.at(t, in: 'I')                 # => 2000-01-02 05:15:01 +0900
Time.at(t, in: 'K')                 # => 2000-01-02 06:15:01 +1000
Time.at(t, in: 'Y')                 # => 2000-01-01 08:15:01 -1200
Time.at(t, in: 'Z')                 # => 2000-01-01 20:15:01 UTC

Смещения в секундах

Значение зоны может быть целым числом секунд в диапазоне -86399..86399:

t = Time.utc(2000, 1, 1, 20, 15, 1) # => 2000-01-01 20:15:01 UTC
Time.at(t, in: -86399)              # => 1999-12-31 20:15:02 -235959
Time.at(t, in: 86399)               # => 2000-01-02 20:15:00 +235959

Объекты часовых поясов

В большинстве случаев значение зоны может быть объектом, отвечающим на определенные методы часового пояса.

Исключения (объект часового пояса не разрешен):

  • Time.new с позиционным аргументом zone.

  • Time.now с ключевым аргументом in:.

Методы часового пояса:

  • local_to_utc:

    • Вызывается при вызове Time.new со значением tz в качестве позиционного аргумента zone или ключевого аргумента in:.

    • Аргумент: объект Time::tm.

    • Возвращает: объект типа Time в часовом поясе UTC.

  • utc_to_local:

    • Вызывается при вызове Time.at или Time.now со значением tz для ключевого аргумента in:, а также при вызове Time#getlocal или Time#localtime со значением tz для позиционного аргумента zone.

    • Аргумент: объект Time::tm.

    • Возвращает: объект типа Time в локальном часовом поясе.

Пользовательский класс часового пояса может иметь эти методы экземпляра, которые будут вызываться при их определении:

  • abbr:

    • Вызывается при вызове Time#strftime с форматом, включающим %Z.

    • Аргумент: объект Time::tm.

    • Возвращает: строковое сокращение имени часового пояса.

  • dst?:

    • Вызывается при вызове Time.at или Time.now со значением tz для ключевого аргумента in:, а также при вызове Time#getlocal или Time#localtime со значением tz для позиционного аргумента zone.

    • Аргумент: объект Time::tm.

    • Возвращает: является ли время летним временем.

  • name:

    • Вызывается при вызове <tt>Marshal.dump(t)</tt>

    • Аргумент: нет.

    • Возвращает: строковое имя часового пояса.

Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

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