Ich bin dabei, unsere Rails 2.3-Anwendung auf Zeitzonen umzustellen (im Moment ist alles in UTC, was nicht stimmt, aber ist bequem!).Richtiges Speichern von Datumsangaben mit TimeZone in MySQL DB für eine Rails-Anwendung
Ich habe diese Einstellungen in environment.rb:
config.active_record.default_timezone = :utc
config.time_zone = "UTC"
Auch in Zukunft auf jede Anfrage in unserer App mich darauf, die folgende Einstellung plane, die Zeitzone einzustellen:
Time.zone = user.time_zone
Wo user.time_zone
ist ihre bevorzugte Wahl (zB US Pacific Time
).
Das funktioniert in der App gut, aber meine Frage bezieht sich darauf, was Rails dann in der MySQL DB speichert. Wenn der Benutzer ein Datum vom 1. Juni 2009 auswählt, wird dieser in einem Feld DATETIME
in der Datenbank in UTC aber mit der Zeitzone versetzt. Wenn der Benutzer beispielsweise eine GMT+6
Zeitzone ausgewählt hat, endet ein ausgewähltes Datum vom 1. Juni 2009 in der Datenbank als 2009-06-01 06:00:00 UTC
.
Ich hätte erwartet, dass dies als 2009-06-01 00:00:00 UTC
in der Datenbank gespeichert wird. Ist mein Denken korrekt oder macht Rails hier etwas Unerwartetes?
Müssen Sie nur die Daten in der Zeitzone des Benutzers anzeigen, oder ist es wichtig, sie speziell in dieser Zeitzone zu speichern? –
Chris Ich möchte es in UTC speichern und nur die Daten in der Zeitzone des Benutzers anzeigen – Olly