Time.use_zone не работает должным образом - PullRequest
17 голосов
/ 04 января 2012

Итак, сейчас в 14:54 по тихоокеанскому времени в Сан-Франциско. По какой-то причине этот блок кода не возвращается в 12:54 по Гринвичу на Гавайях. Я что-то здесь упускаю? Я ожидаю, что этот код вернет мне текущее время на Гавайях

Time.use_zone('Hawaii') do
  Time.now
end
# => 2012-01-03 14:54:54 -0800 

Ответы [ 4 ]

28 голосов
/ 04 января 2012

Это должно работать нормально:

Time.use_zone('Hawaii') do
  p Time.zone.now
end
9 голосов
/ 04 января 2012

Попробуйте использовать Time.now.in_time_zone внутри вашего блока.

> Time.use_zone('Hawaii') do
>   Time.now.in_time_zone
> end
 => Tue, 03 Jan 2012 13:07:06 HST -10:00 
8 голосов
/ 09 июля 2014

Используйте Time.current, если хотите now с поддержкой часовых поясов.Time.now опасно при работе с приложением, поддерживающим часовой пояс, как правило, я никогда не использую Time.now, только Time.current.Временные помощники, такие как 2.hours.ago и 4.days.from_now, также основаны на Time.current.

Кроме того, это отличная статья с большой шпаргалкой внизу: http://www.elabs.se/blog/36-working-with-time-zones-in-ruby-on-rails

4 голосов
/ 15 августа 2013

Time.now - использование времени сервера
Time.zone.now - использование времени приложения rails (в config: config.time_zone)
Time.use_zone - использование часового пояса your для данного блока


Этот пример неверен, поскольку Time.now получает время в часовом поясе вашего сервера и с помощью метода in_time_zone переводит время в эквивалентное время в часовом поясе Гавайев.Но сейчас нет времени на Гавайях!Это время вашего сервера со смещением utc для Гавайев.

Time.use_zone('Hawaii') do
  Time.now.in_time_zone
end
=> Wed, 14 Aug 2013 10:33:18 HST -10:00 

Time.now.in_time_zone
=> Thu, 15 Aug 2013 00:32:30 MSK +04:00 

Чтобы получить время в часовом поясе Гавайев, вы должны использовать

Time.use_zone('Hawaii') do
  Time.zone.now
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...