Как получить код часового пояса из объекта Ruby Timezone?

Я использую Ruby 1.9.3 с gems timezone 0.3.1 и tzinfo 0.3.38. Я хочу получить текущий код часового пояса для часового пояса, например, "EST" для "America/New_York" прямо сейчас или "EDT" летом. Я ничего не нашел в документации, но когда я сбрасываю объект со следующим кодом:

ptz = Timezone::Zone.new :zone => 'America/New_York'
hash = {}
ptz.instance_variables.each do |var|
    hash[var.to_s.tr('@','')] = ptz.instance_variable_get var
end
puts hash.to_json

существует массив из 267 "правил", каждый из которых содержит хеш, где "имя" содержит значение, которое я ищу. Кто-нибудь знает, как я должен определить, какое правило является текущим, чтобы я мог получить значение имени?

2 ответа

Решение

TZInfo::Timezone.get('America/New_York').period_for_utc(Time.now).abbreviation дает вам сокр. за предоставленное время.

  require 'tzinfo'
  tz = TZInfo::Timezone.get('America/New_York')
  tz.strftime("%Z")
  => "EST"
Другие вопросы по тегам