Как получить код часового пояса из объекта 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"