私の Rails アプリには、未加工の UTC 時間で設定して表示したい特定の旅費があります。
これを config/application.rb に追加しました
config.time_zone = 'UTC'
config.active_record.default_timezone = :utc
セット (空の datetime_select)、保存 (UTC として db に保存)、表示 (<%= obj.date.to_utc %>)、および変更 (事前入力された datetime_select) があるようです。
設定、保存、表示に問題はありません。セットの修正を追加しました。時間属性に「+0000」を追加する before_save 呼び出しです。しかし、日時の変更で問題が発生しています。
編集ページを表示すると、datetime_select に以前に保存した日時が表示されます。ただし、6 時間前の時間を表示します。午後 10 時ではなく午後 4 時と表示されます。
これが私のフォームdatetime_selectです:
<%= activity_log_item.object.date.utc %>
<%= activity_log_item.datetime_select :date,
ampm: true,
use_short_month: true,
minute_step: 15, order: [:month, :day, :year, :hour, :minute] %>
</td>
最初の行は、予定時刻 (午後 10 時) を出力します。これは、データベースで同じ時刻であることを確認しました。ただし、datetime_select フォームには午後 4 時が表示されます。
Time.zone =
またはなどを使用して明示的に解析しない限り、アプリ内のすべての時間を UTC で設定、保存、表示したいと思います.in_time_zone
。
Rails 3.2.12 を使用しています。