2012-08-06 33 views
12

En mi base de datos MySQL, el campo updated_at se almacena como UTC. La semana pasada se ingresó un registro a las 7 p.m. EDT y se actualiza con el valor "2012-08-01 23:00:00". Estoy intentando convertir la hora local para un cliente web a UTC que se puede comparar con el campo updated_at en la base de datos.Convertir hora local a UTC en Rails

Como ejemplo, me gustaría convertir '08/01/2012 07:00 pm 'a' 2012-08-01 23:00:00 '(lo que significa que estoy en EDT) pero estoy falta el aspecto de la zona horaria de la conversión. '7:00 pm' es hora local y podría ser de cualquier zona horaria. Mi código actual:

ruby-1.9.2-head :015 > from_date = DateTime.strptime('08/01/2012 07:00 pm', '%m/%d/%Y %H:%M %p') 
=> Wed, 01 Aug 2012 19:00:00 +0000 
ruby-1.9.2-head :016 > from_date = Time.zone.parse(from_date.to_s).utc 
=> 2012-08-01 19:00:00 UTC 

¿Alguna idea?

Editar: También, podría usar "% Z" en mi llamada de tiempo de barrido, pero eso es suponiendo que tengo la zona horaria en el valor, que actualmente no tengo. Creo que podría usar Javascript para enviarlo junto con el valor de fecha/hora.

+0

Would this hep you? http://stackoverflow.com/questions/4820819/how-to-convert-date-into-utc-in-ruby-rails – lcguida

Respuesta

20

locales a UTC

created_at.utc

UTC a local de

created_at.localtime

0

Primero verificaría la configuración de la zona horaria.

En su environment.rb (carriles 2) o application.rb (carriles 3) de archivos, puede establecer la zona horaria por defecto con: config.time_zone = 'Eastern Daylight Time (EDT)'

En segundo lugar me gustaría ver en esta entrada de información y orientación y consejos para satisfacer sus necesidades:
http://databasically.com/2010/10/22/what-time-is-it-or-handling-timezones-in-rails/

+0

No tengo un huso horario explícitamente establecido, por lo que está predeterminado a UTC. Si cambio ahora a EDT por defecto, ¿afectaría esto a los datos que ya se almacenaron en la base de datos? –

Cuestiones relacionadas