【发布时间】:2012-02-03 11:33:24
【问题描述】:
我遇到了对我来说似乎很简单的问题,但我无法弄清楚我做错了什么。在我的应用程序中,用户可以通过一个简单的 form_for 添加他们的课程。他们可以输入课程讲座的开始时间和结束时间,如下所示:
<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>
我在 application.rb 中将我的时区配置为东部时间,这似乎可以正常工作,因为 created_at 在正确的时区返回。
但是,我遇到的问题是 start_time 和 end_time 作为 UTC 输入到数据库中。因此,当用户选择在上午 10 点开始的课程时,输入为 10 UTC 而不是 10 AM EST / 15:00 UTC。我在这里想念什么?看来我想要发生的事情应该是可能的。
【问题讨论】:
-
我实际上认为我有相反的问题。我的 start_time 和 end_time 没有保存在时区内,而是保存为 UTC 时间。
-
我从来没有使用过 time_select 但在处理时区时总是使用 datetime_select,也许这可能是个问题,但似乎不太可能。
-
你的想法实际上让我走上了正轨。我将 start_time 和 end_time 的列类型更改为 datetime,这解决了我遇到的问题。我猜时间列只允许 UTC。
-
@TimBrandes 或 PhilipV - 如果您想将解决方案概括为您自己的答案,我将删除我的答案。 (请参阅meta.stackexchange.com/questions/90263/… 详细说明为什么这会有所帮助。)谢谢!
标签: ruby-on-rails ruby-on-rails-3 time timezone