times rails metodo hora formato formatear fechas fecha actual ruby-on-rails ruby datetime runtime

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)