ruby - mundo - para que sirven los husos horarios
¿Cómo obtengo que Ruby analice el tiempo como si estuviera en un huso horario diferente? (3)
Estoy analizando algo como esto:
11/23/10 23:29:57
que no tiene una zona horaria asociada, pero sé que está en la zona horaria UTC (mientras que yo no). ¿Cómo puedo hacer que Ruby lo analice como si estuviera en la zona horaria UTC?
Podría agregar el nombre de la zona horaria UTC a la cadena antes de analizarlo:
require ''time''
s = "11/23/10 23:29:57"
Time.parse(s) # => Tue Nov 23 23:29:57 -0800 2010
s += " UTC"
Time.parse(s) # => Tue Nov 23 23:29:57 UTC 2010
Si usa los rieles, puede usar los ayudantes ActiveSupport::TimeZone
current_timezone = Time.zone
Time.zone = "UTC"
Time.zone.parse("Tue Nov 23 23:29:57 2010") # => Tue, 23 Nov 2010 23:29:57 UTC +00:00
Time.zone = current_timezone
Está diseñado para tener la zona horaria establecida al comienzo de la solicitud según la zona horaria del usuario.
Todo necesita tener Time.zone
en él, por lo que Time.parse
todavía analizará como la zona horaria de los servidores.
http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html
Nota: el formato de tiempo que tienes arriba ya no funcionaba, así que cambié a un formato que es compatible.
Una respuesta a la respuesta de @Pete Brumm sin Time.zone set / unset
Time.zone.parse("Tue Nov 23 23:29:57 2010") + Time.zone.utc_offset