So speichern Sie eine Zeitzone korrekt mit Ruby und MongoId?

Bitte entschuldigen Sie mich, wenn dies ein bisschen ein noob Problem:

Habe ich eine app, wo Benutzer können Ihre eigenen Zeitzonen in Ihrem Profil.

Wenn jemand einen Lineup (app-spezifische Terminologie), ich Tue das folgende:

time = ActiveSupport::TimeZone.new(user.timezone).parse(
  "Wednesday, 26 October, 2011 13:30:00"
)

# This outputs: 2011-10-26 13:30:00 +0200 - valid according to the user selected TZ

Ich dann speichern Sie das Lineup:

Lineup.create({
   :date => time.gmtime,
   :uid  => user._id,
   :pid  => product._id
})

Diese sollten (in der Theorie) save the date-wie gmtime, aber ich bekomme Folgendes beim anzeigen der Rekord:

{
  "_id": ObjectId("4e9c6613e673454f93000002"),
  "date": "Wed, 26 Oct 2011 13: 30: 00 +0200",
  "uid": "4e9b81f6e673454c8a000001",
  "pid": "4e9c6613e673454f93000001",
  "created_at": "Mon, 17 Oct 2011 19: 29: 55 +0200"
}

Wie Sie sehen können, das Feld "Datum" ist falsch - es immer noch die Aufrechterhaltung der Benutzer-Zeitzone, es sollten GMT, nicht timezone bestimmten.

Wenn ich der Ausgabe.gmtime, bekomme ich die richtige Zeit (das gespeichert werden soll):

2011-10-26 11:30:00 UTC (correct)

Irgendwelche Ideen, wie das speichern der GMT-Datum, so dass es tatsächlich spart das GMT-Datum?

Schreibe einen Kommentar