0

モデルでその日のすべてのエントリを取得しようとしています:

where('date(created_at) = date(?)', Date.today)

しかし、タイムゾーン (私の現地時間は UTC+2) のため、期待した結果が得られません。たとえば、エントリが午前 0 時から 1 分後に作成された場合、データベースでは 22:01 に保存されます (つまり、"Date.today" ではありません)。

それを行う方法はありますか?

編集:

ウェブサイトの管理者として、「今日」の現地時間でのエントリ数を表示したいと考えています (これは統計目的のみです!)。したがって、タイムスタンプを utc に保存しておきたいのですが、このリクエスト中にそれらをローカル タイムゾーンに変換します。

4

3 に答える 3

0

正しいタイムゾーンはいくつかの方法で設定できます。1つはこの回答で説明されています:

https://stackoverflow.com/a/6118837/567126

application.rbに以下を追加すると機能します

config.time_zone ='東部標準時(米国およびカナダ)'

于 2012-09-03T20:30:33.890 に答える
0
where('date(created_at) = ?', Time.zone.now.to_date)
于 2012-09-04T05:18:48.227 に答える
0

データベースの時刻は UTC として保存する必要があります。このようにして、世界規模の Web サイトを作成する場合、各ユーザーに独自のタイムゾーンを提供できます。

ユーザーのローカル タイムゾーンで時刻を表示するのは、UI (ビュー) の役割です。

Time.now.utcを使用する場所については、 このように、共通の UTC で DB を検索しています。

于 2012-09-04T05:50:24.307 に答える