Как сказано выше, чтобы создать время в определенном часовом поясе (например, 4/10/2014, 13:30, Нью-Йорк):
@event.start_time = Time.find_zone('Eastern Time (US & Canada)').local(2014,4,10,13,30)
=> Thu, 10 Apr 2014 13:30:00 EDT -04:00
@event.start_time.utc
=> 2014-04-10 17:30:00 UTC
Когда оно будет сохранено в вашей БД, оно будетпреобразуется в UTC (по крайней мере, в Postgres, если в миграции используется тип метки времени), и при последующем доступе он будет отображаться относительно часового пояса приложения, установленного в config / application.rb
Для правильного отображения местного времениМы также сохраняем название часового пояса (например, «Восточное время (США и Канада)») в нашей базе данных.Итак, когда мы хотим напечатать время в наших представлениях, мы делаем ...
@event.start_time.in_time_zone(@event.timezone)
=> Thu, 10 Apr 2014 13:30:00 EDT -04:00
Чтобы получить сокращенный часовой пояс (например, EST)
@event.start_time.in_time_zone(@event.timezone).zone
=> "EDT"