Ich habe Spalte, die nur Zeit speichert. Ich möchte es in Datetime und dann in eine bestimmte Zeitzone konvertieren. Wenn ich es auf der Konsole nur mit dem Attribut ausführe, wird der korrekte Konvertierungswert angezeigt. Aber wenn ich es in Abfrage verwende, zeigt die Abfrage die aktuelle Zeit in UTC an. Angenommen, ich habe Zeit "05:15" in der Zentralzeit gespeichert. Nun, wenn ich Datensätze für einen Intervall von 30 Minuten holen will plus und minus dieser Zeit, ich folgenden,Ruby on Rails 3 konvertieren Zeit zu DateTime in bestimmten Zeitzone
day = Time.now
# departure_time_from _db below is the name of column in table which store time
departure = departure_time_from _db.change(:day => date.day, :month => date.month, :year => date.year)
departure = departure.in_time_zone("Central Time (US & Canada)")
Wenn ich über Code auf der Konsole ausführen und den Wert sehen, zeigt es richtig umgerechneten Wert. Aber wenn ich diese Variable in der unteren Abfrage verwende, wird die aktuelle Zeit anstelle der Abfahrtszeit verwendet.
Model.where("column_name > ? and "column_name < ?, departure - 30.minutes, departure + 30.minutes)
Die Zeit in obiger Abfrage verwendet wird, soll die Zeit, die ich d.h Zentrale Zeitzone will, aber in der Abfrageausgabe zeigt es UTC verwendet.
Bitte lassen Sie mich wissen, was ich vermisse.
Wollen Sie sagen, dass, was auch immer Datetime ich biete, die Datetime in der Abfrage wird wie UTC, d. Wenn ich eine DateTime in CST, während der Ausführung, wird es in UTC konvertiert werden. –
Ja, das ist richtig, es ist in UTC konvertiert. –