Как перевести полные имена часовых поясов в аббревиатуры tz? - PullRequest
26 голосов
/ 10 марта 2012

В приложении Rails 3.x мне нужно отображать сокращения часовых поясов (EST, PST, CST и т. Д.), А не полное имя часового пояса. Я видел ряд обсуждений, которые, кажется, решают эту проблему, но слишком многословно.

Существует ли драгоценный камень или очень лаконичный метод для его обработки, который можно использовать для их правильного отображения?

Ответы [ 4 ]

32 голосов
/ 24 октября 2012

Для текущего часового пояса:

Time.zone.now.strftime('%Z')

Или для списка часовых поясов:

ActiveSupport::TimeZone.us_zones.map do |zone|
  Time.now.in_time_zone(zone).strftime('%Z')
end

Это работает, но все же кажется, что должен быть лучший способ...

7 голосов
/ 26 июня 2013
Time.now.zone
# => "UTC"

Чтобы использовать часовой пояс по умолчанию (если установлен), вы можете использовать:

Time.zone.now.zone
# => "CDT"

Подробнее об этом: http://api.rubyonrails.org/classes/Time.html#method-c-zone-3D

5 голосов
/ 01 февраля 2016

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

Если у вас есть доступ к ActiveSupport и работа с объектами TimeZone, например:

timezone = ActiveSupport::TimeZone.all[44]

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

timezone.tzinfo.current_period.abbreviation
2 голосов
/ 10 марта 2012

Что ж, если вы позволите своим пользователям выбирать собственный часовой пояс, вы можете отобразить сокращение часового пояса как часть формата datetime.Попробуйте что-то вроде этого в вашем applicationtion_helper.rb, а затем используйте его в представлении для форматирования объекта datetime:

def format_datetime(datetime)
  datetime.strftime "%-d %b %Y, %H:%M %Z"
end

Обновление

Если вы выполняете геолокациюосновываясь на IP-адресе пользователя, вы можете выполнить поиск часового пояса на основе этого местоположения.Этот вопрос фактически задавался ранее, но в отношении широты / долготы, а не названия данного часового пояса.

Прочитайте этот вопрос: Поиск часового пояса по широте и долготе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...