2012-08-06 16 views
12

Nel mio database MySQL il campo updated_at viene archiviato come UTC. La scorsa settimana è stato inserito un record alle 19:00 EDT e il suo valore aggiornato_at è "2012-08-01 23:00:00". Sto cercando di convertire l'ora locale per un client Web in UTC che può essere confrontata con il campo updated_at nel database.Converti ora locale in UTC in Rails

Ad esempio, mi piacerebbe convertire '08/01/2012 07:00 pm 'a' 2012-08-01 23:00:00 '(indicando che sono in EDT) ma sono manca l'aspetto del fuso orario alla conversione. '7:00 pm' è l'ora locale e potrebbe provenire da qualsiasi fuso orario. Il mio attuale codice:

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 

Qualche idea?

Modifica: Inoltre, potrei usare "% Z" nella mia chiamata strptime ma suppongo di avere il fuso orario nel valore, che attualmente non ho. Credo che potrei usare Javascript per inviarlo insieme al valore di data/ora.

+0

Questo ti farebbe? http://stackoverflow.com/questions/4820819/how-to-convert-date-into-utc-in-ruby-rails – lcguida

risposta

20

locale in ora UTC

created_at.utc

UTC di locali

created_at.localtime

0

Prima vorrei controllare l'impostazione del fuso orario.

Nella tua environment.rb (Rails 2) o application.rb (Rails 3) file, è possibile impostare il fuso orario predefinito con: config.time_zone = 'Eastern Daylight Time (EDT)'

In secondo luogo vorrei guardare questo post per informazioni e orientamento e suggerimenti per soddisfare le vostre esigenze:
http://databasically.com/2010/10/22/what-time-is-it-or-handling-timezones-in-rails/

+0

Non ho un fuso orario impostato in modo esplicito, quindi è inadempiente ad UTC. Se lo cambio ora come predefinito su EDT, ciò influenzerebbe i dati che sono già stati memorizzati nel database? –

Problemi correlati