Ответ 1
Используйте Time.zone.name
, а не Time.zone.to_s
[1] pry(main)> Time.zone.to_s
=> "(GMT-05:00) Eastern Time (US & Canada)"
[2] pry(main)> Time.zone.name
=> "Eastern Time (US & Canada)"
[3] pry(main)> ActiveSupport::TimeZone[Time.zone.name]
=> (GMT-05:00) Eastern Time (US & Canada)
Что касается того, как я получил это (по запросу), я просто знаю, что метод name
существует на Time.zone
. Если бы я не знал этого наизусть, я проверю документы. Если это не так, как вы говорите (и это, здесь), я обычно проверяю класс/модуль/объект Pry. Pry - альтернатива irb, которая позволяет мне делать что-то вроде
[1] pry(main)> cd Time.zone
[2] pry(#<ActiveSupport::TimeZone>):1> ls -m
Comparable#methods: < <= == > >= between?
ActiveSupport::TimeZone#methods: <=> =~ at formatted_offset local local_to_utc name now parse period_for_local period_for_utc to_s today tzinfo utc_offset utc_to_local
self.methods: __pry__
[3] pry(#<ActiveSupport::TimeZone>):1> name
=> "Eastern Time (US & Canada)"
ls -m
в строке [2]
выше выведет методы на объект (если вы прокрутите правую сторону, вы увидите там name
). Вы можете видеть в [3]
, я могу вызвать name
непосредственно на объект Time.zone
, в котором я внутри, и получить результат, который вы ищете.