time_select form helper将新时间对象解释为UTC而不是配置的时区

Phi*_*p V 5 time timezone ruby-on-rails ruby-on-rails-3

我遇到的对我来说似乎是一个简单的问题,但我无法弄清楚我做错了什么.在我的应用中,用户可以通过简单的form_for添加他们的课程.他们可以为课程的讲座输入start_time和end_time,如下所示:

<div class="field">
  Start Time<br />
  <%= time_select :course, :start_time, { :minute_step => 5, :ampm => true } %>
</div>

<div class="field">
  End Time<br />
  <%= time_select :course, :end_time, { :minute_step => 5, :ampm => true } %>
</div>
Run Code Online (Sandbox Code Playgroud)

我将application.rb中的时区配置为设置为东部时间,这似乎正常工作,因为在正确的时区返回created_at.

但是,我遇到的问题是start_time和end_time作为UTC输入到数据库中.因此,当用户选择在上午10点开始的班级时,将其输入为10 UTC而不是10 AM EST/15:00 UTC.我在这里错过了什么?似乎我想要发生的事情应该是可能的.

Dre*_*awn 2

总结评论中的答案,以便从“未回答”过滤器中删除此问题:

蒂姆·布兰德斯建议:

也许这对您有帮助:Timezone with Rails 3 ...我从未使用过 time_select 但在处理时区时总是使用 datetime_select,也许这可能是一个问题,但似乎不太可能。

适用于菲利普五世的解决方案:

我的 start_time 和 end_time 没有保存在时区内,而是保存为 UTC 时间。...我将 start_time 和 end_time 的列类型更改为 datetime,这解决了我遇到的问题。我猜时间列只允许 UTC。