2015-03-26 6 views
2

Я ищу способ извлечь идентификатор дружественной зоны (например, CET, GMT или UTC) из экземпляра DateTime.Извлечение идентификатора часового пояса из экземпляра DateTime

Некоторые из моих неудачных попыток:

>> DateTime.current.zone 
=> "+00:00" # Not what I want 

>> Time.current.zone 
=> "UTC" 
>> DateTime.current.to_time.zone 
=> "CET" # Uses system time instead of the one set in Rails config 

Мне также удалось обнаружить, что если вы приводите экземпляр DateTime в определенной зоне, DateTime#zone возвращает аббревиатуру я ищу, но не работает для uncast например:

>> DateTime.current.in_time_zone('America/Los_Angeles').zone 
=> "PDT" 
>> DateTime.current.zone 
=> "+00:00 
+0

'Time.current.zone' - не то, что вы ищете? – MrYoshiji

+0

В конце концов 'Time.zone', который« Возвращает TimeZone для текущего запроса. [...] Если 'Time.zone' не был установлен [...], возвращает TimeZone, указанный в' config.time_zone'. " (источник: http://api.rubyonrails.org/classes/Time.html#method-c-zone) – MrYoshiji

+2

Вот что я решил, но представьте, что у вас есть экземпляр DateTime в определенный часовой пояс - вы можете 't затем используйте его Time.current.zone, так как это не будет часовой пояс, к которому применяется экземпляр DateTime. Но ваш ответ заставил меня найти частичное решение моей проблемы, спасибо. ;) –

ответ

-2

Вы должны использовать strftime и %Z узор. Он будет форматировать часовой пояс как сокращенное имя.

+0

Это вернет объект String, содержащий имя Zone. Есть лучшие способы получить зону времени как объект TimeZone и иметь возможность манипулировать им как есть (и не только String). – MrYoshiji

+0

@MrYoshiji Rafal хочет взять название аббревиатуры. ** Не объект TimeZone **. Посмотрите на пример. –

+0

Примерам OP предшествует «Несколько моих неудачных попыток». Он никогда не говорил четко: «Я хочу имя сокращения зоны времени», просто «извлеките идентификатор дружественной зоны из DateTime». Возможно, ему нужно манипулировать им и не только отображать его. – MrYoshiji

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