在我的 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)。
我在设置、保存或显示方面没有问题。我为该集合添加了一个修复程序 - 一个 before_save 调用以将“+0000”附加到时间属性。但是我在修改日期时间时遇到了问题。
当我查看编辑页面时,datetime_select 会显示之前保存的日期时间。但是,它会显示 6 小时前的小时数。它将显示下午 4 点,而不是晚上 10 点。
这是我的表格 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 点。
我希望我的应用程序中的所有时间都以 UTC 设置、保存和显示,除非我以其他方式明确解析它——例如使用Time.zone =
或。.in_time_zone
我正在使用 Rails 3.2.12。