0

Rails 3.2.8 を使用しています。時間フィールドまたは日時フィールドを使用してスキャフォールドを生成するとき。HTML フォーム フィールドには、現在の日付/時刻が UTC で事前に入力されます。現在の日付/時刻が事前に入力されているのは素晴らしいことですが、UTC であるため、毎回時刻を 7 時間戻す必要があります (これには、日付を 1 戻す必要がある場合もあり、月と年も戻す必要がある場合があります)。そして、UTC 時間がデータベースに保存されているように見えるので、現地時間で記録した場合、表示/編集にも問題が発生します。

フォーム ヘルパーがローカル タイムをより適切に処理するための Ruby ドキュメントを見ましたが、関連するものは何もありません。

Railsで日付と時刻を編集および表示する最良の方法は何ですか?

UPDATE:明確にするために、UTC時間がデータベースに保存されるという考えが好きです。time_selectヘルパーとdatetime_selectフォーム ヘルパーがユーザーのローカル タイムゾーンで時刻を編集できるようにしたいだけですそしてもちろん、ユーザーのローカル タイムゾーンで時刻を簡単に表示したいと考えています。

4

2 に答える 2

0

のどこかにユーザーごとに表示するタイム ゾーンを設定する必要がありますbefore/around_filter。これは次のように行う必要があります。

Time.zone = "Kyiv"

例は、その API にあります: http://api.rubyonrails.org/classes/Time.html#method-c-zone-3D

を実行しrake time:zones:allてすべてを表示します。

すべての変換は、舞台裏で処理する必要があります。

于 2012-10-01T19:12:05.747 に答える
0

これは過去に私を助けました。次のようなことができます。

Time.now.in_time_zone("Central Time (US & Canada)")

Railsを参照してください: UTC DateTime を別のタイム ゾーンに変換する

于 2012-10-01T19:31:56.633 に答える