【发布时间】:2013-10-23 20:38:34
【问题描述】:
在我的 rails 应用程序中,我希望在原始 UTC 时间中设置和显示某些差旅费用。
我已将此添加到我的 config/application.rb
config.time_zone = 'UTC'
config.active_record.default_timezone = :utc
似乎有一个集合(空白 datetime_select)、一个保存(作为 UTC 存储在 db 中)、一个显示( 和一个修改(预填充的 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。
【问题讨论】:
-
另外值得注意的是,当我刷新页面时,它会将 datetime_select 预填充时间切换为 utc - to local - to utc。并非始终如一,但经常发生。
标签: ruby-on-rails datetime datetime-select