ОБНОВЛЕНИЕ: хорошо, я не сформулировал хороший Q, которому ответят. Я все еще борюсь с heroku, находящимся на-07:00 UTC и мне в +02:00 UTC.
Q: Как я писал журнал в корректном Time.zone? Различие этих 9 часов, heroku (нас запад) - Норвегия, недовольно для работы с. Я получаю это в своем production.log (использование heroku logs
):
Обработка ProductionController#create к xml (для 81.26.51.35 в 28.04.2010 23:00:12) [POST]
Как я заставляю это писать 2010-04-29 08:00:12 +02:00 GMT
?
Обратите внимание, что я работаю в heroku и не могу установить время сервера сам, поскольку можно было сделать в Вашей амазонке серверы EC2. Ниже мой предыдущий вопрос, я оставлю его быть, поскольку он содержит некоторую интересную информацию во время и зоны.
Почему делает Time.now
приведите к местному времени сервера, когда я установлю другой часовой пояс в моем environment.rb
config.time_zone = 'Copenhagen'
Я поместил это в представление
<p> Time.zone <%= Time.zone %> </p>
<p> Time.now <%= Time.now %> </p>
<p> Time.now.utc <%= Time.now.utc %> </p>
<p> Time.zone.now <%= Time.zone.now %> </p>
<p> Time.zone.today <%= Time.zone.today %> </p>
рендеринг этого результата на моем приложении в heroku
Time.zone (GMT+01:00) Копенгаген
Time.now понедельник 26 апреля 8:28:21 - 0700 2010
Time.now.utc понедельник 26 апреля 15:28:21 UTC 2010
Time.zone.now 26.04.2010 17:28:21 +0200
Time.zone.today 26.04.2010
Time.zone.now
приводит к корректному результату. Сделайте я должен переключиться от Time.now
кому: Time.zone.now
, везде? Кажется громоздким. Я действительно не забочусь, каково местное время сервера, он дает мне загрузки проблемы из-за широкого применения Time.now
. Я неправильно понимаю что-либо фундаментальное здесь?
После дальнейшего исследования моих собственных проблем с часовым поясом Heroku я нашел сообщение, в котором указывает, что вы действительно можете указать часовой пояс на уровне приложения, используя следующую команду:
heroku config:add TZ=Europe/Oslo
Я считаю, что это может быть ответом на все ваши проблемы. Предоставлено http://www.reality.hk/articles/2010/01/07/1319/ ( Редактировать: Неработающая ссылка по состоянию на 23.08.2012. Архивная копия .)
Без возможности изменить фактическое время сервера (что я не думаю, что вы сможете это сделать на Heroku), ваш единственный вариант - конвертировать время самостоятельно.
Если Time.zone.now
слишком громоздко, вы можете установить глобальный часовой пояс с помощью драгоценного камня tzinfo :
$tz = TZInfo::Timezone.get("Europe/Oslo")
$tz.now # current time in Norway
Но это все еще глобальное изменение в вашем приложении, и существенно не отличается от того, что вы делаете.