Convertir, heure locale, à l'UTC dans les Rails
Dans ma base de données MySQL l'updated_at champ est stockée comme l'UTC. La semaine dernière, un record a été saisi à 7pm HAE), et c'est updated_at valeur est "2012-08-01 23:00:00". Je suis en train de convertir l'heure locale pour un client web à l'UTC qui peuvent être comparées avec les updated_at champ dans la base de données.
Comme un exemple, j'aimerais convertir en '08/01/2012 07:00" à "2012-08-01 23:00:00' (comptabilité pour moi d'être dans l'EDT) mais il me manque le fuseau horaire à l'aspect de la conversion. '7:00 pm' est l'heure locale et pourrait être de n'importe quel fuseau horaire. Mon code actuel:
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
Toutes les pensées?
Edit: Aussi, je pourrais utiliser "%Z" dans mon strptime appel, mais c'est en supposant que j'ai le fuseau horaire de la valeur, ce qui je ne. Je suppose que je pourrais utiliser Javascript pour envoyer de la valeur de date/heure.
OriginalL'auteur Chris Stewart | 2012-08-06
Vous devez vous connecter pour publier un commentaire.
locaux de l'utc
created_at.utc
utc locales
created_at.localtime
OriginalL'auteur andyshi
D'abord, je voudrais vérifier la configuration du fuseau horaire.
Dans votre environnement.rb (Rails 2) ou de l'application.rb (Rails 3) de fichiers, vous pouvez définir le fuseau horaire par défaut avec:
config.time_zone = 'Eastern Daylight Time (EDT)'
Ensuite je regarde ce post pour plus d'informations et des conseils pratiques pour répondre à vos besoins:
http://databasically.com/2010/10/22/what-time-is-it-or-handling-timezones-in-rails/
C'est fondamentalement correct sauf que n'est pas une période de validité de la zone. C'est un étalon de temps.
"Hawaii", "Alaska", "Pacific Time (US & Canada)", "Arizona", "Mountain Time (US & Canada)", "Central Time (US & Canada)", "Eastern Time (US & Canada)", "Indiana (East)"
OriginalL'auteur Michael Durrant