En Ruby/Rails, ¿cómo convierto un UTC DateTime a otra zona horaria?Rieles: convierte UTC DateTime a otra zona horaria
Respuesta
time.in_time_zone(time_zone)
Ejemplo:
zone = ActiveSupport::TimeZone.new("Central Time (US & Canada)")
Time.now.in_time_zone(zone)
o simplemente
Time.now.in_time_zone("Central Time (US & Canada)")
Usted puede encontrar los nombres de las zonas horarias ActiveSupport haciendo:
ActiveSupport::TimeZone.all.map(&:name)
# or for just US
ActiveSupport::TimeZone.us_zones.map(&:name)
Trate TimeWithZone objetos de ActiveSupport MANIPUL 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.
¿Cuál es la sintaxis para importar TimeWithZone en mi clase? ¿O lo obtengo de manera predeterminada con Rails? –
Creo que lo obtienes por defecto. mckeed tiene el código que necesitas, pero no lo verás en irb. Debes ejecutarlo en Rails. – Fred
Tienes razón, gracias, Fred, viene con Rails por defecto. Estaba agarrando paja, tratando de que funcionara en irb. –
estoy usando simple_form en los carriles 4 y que acaba 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
Por si acaso, si se trata de objetos ActiveRecord en Rails .
Podría ser una buena idea utilizar Time.use_zone
de por solicitud zona horaria base de que anula la zona horaria por defecto en config.time_zone
Más detalles explico en https://stackoverflow.com/a/25055692/542995
si Time.zone
es su zona horaria deseada, entonces puede utilizar @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
No funciona en Rails 5 ' Time.zone # => Europe/Paris my_date # => Mié, 29 Mar 2017 19:00:20 +0200 my_date.to_time # =>" 2017-03-29T17 : 00: 20.000 + 00: 00 " my_date.to_time.to_datetime # => mié, 29 mar 2017 17:00:20 +0000 ' –
- 1. Convertir UTC DateTime a otra zona horaria
- 2. Defaulting zona horaria fecha de UTC para DateTime de JodaTime
- 3. Obtener zona horaria a partir de DateTime
- 4. C# DateTime cuestiones restar de zona horaria
- 5. datetime para encadenar con la zona horaria
- 6. Rails no convierte la zona horaria (PostgreSQL)
- 7. DataContractJsonSerializer DateTime implícita conversión de zona horaria
- 8. Rieles: obtenga #beginning_of_day en la zona horaria
- 9. Cómo convertir DateTime en zona horaria específica?
- 10. Convirtiendo python datetime a timestamp y de regreso en UTC todavía usa la zona horaria local
- 11. Convertir DateTime a UTC sólo si no está ya Utc
- 12. Cadena de fecha/hora UTC a la zona horaria
- 13. ¿Cómo puedo determinar una zona horaria por el desplazamiento UTC?
- 14. Cómo convertir hora UTC a hora en cualquier otra zona horaria en C#
- 15. ¿Cómo modifico la zona horaria de un DateTime en Ruby?
- 16. Cómo convertir el tiempo de fecha de una zona horaria a otra zona horaria
- 17. Almacenamiento Doctrine2 DateTime en UTC Sólo
- 18. forzar zona horaria de Java como GMT/UTC
- 19. formato como hora GMT/UTC cuando la zona horaria predeterminada es otra cosa
- 20. Problema con python/pytz Convirtiendo de la zona horaria local a UTC y luego a
- 21. celerybeat utiliza UTC incluso con la configuración de zona horaria
- 22. ¿clock_gettime es una hora UTC o la zona horaria local?
- 23. ¿Cómo obtengo el desplazamiento UTC actual (zona horaria)?
- 24. Python: Convertir hora local a otra zona horaria
- 25. ¿Cómo se muestra DateTime con una zona horaria abreviada?
- 26. zona horaria por Coordinar
- 27. ¿Puede MySQL convertir una hora UTC almacenada a la zona horaria local?
- 28. Tengo problemas para convertir mi DateTime a UTC
- 29. Ajuste de la zona horaria en PHP con DateTime/DateTimeZone
- 30. Convierte cadena a datetime
En IRB, cuando intento Time.now.in_time_zone ('CCT'), me sale el error "método no definido 'in_time_zone'". ¿Hay clases de rieles que necesito para que esto funcione? –
¿Qué versión de Rails estás usando? ¿Funciona si haces Time.zone.now.in_time_zone (...)? – mckeed
Muchas gracias por la muestra de código. Eso lo aclaró (junto con el comentario de Fred). Estaba haciendo tantas cosas mal, ni siquiera puedo empezar a explicar :-) –