時間だけを格納する列があります。私はそれをdatetimeに変換してから、特定のタイムゾーンに変換したい。属性だけを使ってコンソール上で行うと、正しい変換値が表示されます。しかし、私はそれをクエリで使用すると、クエリは現在の時刻をUTCで表示します。中央時間に「05:15」という時間が格納されているとします。私は30分プラスと今回のマイナスの間隔のレコードを取得したいとき、私は、コンソール上で上記のコードを実行し、値を見ると今、私は、Ruby on Rails 3時刻を特定のタイムゾーンでDateTimeに変換する
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)")
を次の操作を行い、それが正しい変換された値を示しています。しかし、以下のクエリでこの変数を使用すると、出発時間の代わりに現在の時間が使用されます。
Model.where("column_name > ? and "column_name < ?, departure - 30.minutes, departure + 30.minutes)
上記のクエリで使用される時間は、必要な時間、つまり中央タイムゾーンでなければなりませんが、クエリ出力では、使用されているUTCが表示されます。
私には何が足りないのか教えてください。
私が提供する日時は問わず、クエリの日時はUTCごとになります。すなわち、実行中にCSTでDateTimeを指定すると、UTCに変換されます。 –
はい、正しいです、それはUTCに変換されます。 –