ruby on rails - rails - Rieles: convierte UTC DateTime en otra zona horaria
metodo times ruby (5)
Estoy utilizando simple_form en Rails 4 y acabo de agregar el campo de entrada como
<%= f.input :time_zone, :as => :time_zone %>
con la migración
class AddTimeZoneColumnToTextmessage < ActiveRecord::Migration
def change
add_column :textmessages, :time_zone, :string
end
end
En Ruby / Rails, ¿cómo convierto un UTC DateTime a otra zona horaria?
Por si acaso, si está tratando con el objeto ActiveRecord en Rails.
Puede ser una buena idea usar Time.use_zone
para una zona horaria por solicitud que anule la zona horaria predeterminada establecida en config.time_zone
Más detalles que explico en https://.com/a/25055692/542995
Pruebe los objetos TimeWithZone de TimeWithZone manipulados con TimeZone. ActiveSupport también proporciona el método in_time_zone para convertir una hora UTC en un huso horario TimeZone especificado. La respuesta de mckeed muestra el código.
si Time.zone
es su zona horaria deseada, entonces puede usar @date.to_time.to_datetime
> @date
=> Tue, 02 Sep 2014 23:59:59 +0000
> @date.class
=> DateTime
> @date.to_time
=> 2014-09-02 12:59:59 -1100
> @date.to_time.to_datetime
=> Tue, 02 Sep 2014 12:59:59 -1100
time.in_time_zone(time_zone)
Ejemplo:
zone = ActiveSupport::TimeZone.new("Central Time (US & Canada)")
Time.now.in_time_zone(zone)
o solo
Time.now.in_time_zone("Central Time (US & Canada)")
Puede encontrar los nombres de las zonas horarias de ActiveSupport haciendo:
ActiveSupport::TimeZone.all.map(&:name)
# or for just US
ActiveSupport::TimeZone.us_zones.map(&:name)