2015-10-29 1 views
0

Могу ли я как-то передать название часового пояса или аббревиатуру на Time.new. У меня все работает со смещением, но мне нужен часовой пояс, такой как PST, GMT и т. Д.Пропустить часовое пояса на Time.new

Просьба посмотреть мой простой код ниже.

После уже работает

Time.new(year, month, day, hr, min, sec, utc_offset) 

Я хочу что-то вроде следующие работы.

Time.new(year, month, day, hr, min, sec, timezone_name/abbreviation) 

Любая помощь очень ценится.

+0

Тщательное - временная зона bbreviations может быть неоднозначным. Например, существует 5 различных интерпретаций КНТ. Это «Центральное стандартное время», «Китайское стандартное время» и т. Д. Подробнее см. [Список по википедии] (https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations). –

+0

@MattJohnson благодарит за очень полезный комментарий. но я использую только us_zones. Но да, вы правы. Я думаю, я должен хранить полное имя часового пояса. – AMBasra

ответ

0

вы можете использовать этот один

Time.use_zone('Dublin') { 
    # Time.now.... 
} 

Пример:

Time.use_zone('St. Petersburg') { DateTime.current } 

Чт, 29 Окт 2015 17:24:40 +0300

Time.use_zone('Berlin') { DateTime.current } 

Чт, 29 Октября 2015 15:24:59 +0100

Для некоторых более подробной информации, посмотрите на апи (http://apidock.com/rails/Time/use_zone/class)

обновление: вы можете извлечь всю информацию времени в массив:

Time.now.to_a 

[20, 42, 9, 30, 10, 2015, 5, 303, ложная, "CET"]

+0

Я в основном хочу хранить TimeZone. Что-то вроде Thu, 29 Oct 2015 15:24:59 +0100 PST – AMBasra

+0

@AMBasra я обновил свой ответ – rob

+0

это не удается в следующем сценарии 2.2.2: 074> Time.now.in_time_zone («Индиана (Восток)»). To_a => [38, 34, 12, 30, 10, 2015, 5, 303, true, «EDT»] 2.2.2: 075> Time.now.in_time_zone («Восточное время (США и Канада)»). to_a => [57, 34, 12, 30, 10, 2015, 5, 303, true, "EDT"] – AMBasra

Смежные вопросы