Ruby on rails 3 Rails中的日期选择时区问题

Ruby on rails 3 Rails中的日期选择时区问题,ruby-on-rails-3,datetime,timezone,Ruby On Rails 3,Datetime,Timezone,我试图让datetime\u选择用户时区中的帮助器,但我遇到了一些问题。设置如下所示: <%= datetime_select :custom_daily_message, :date, :default => Time.now.in_time_zone %> Fri, 07 Sep 2012 11:20:00 PDT -07:00 Fri, 07 Sep 2012 11:20:00 UTC +00:00 在控制器中,我设置了日期: T

我试图让datetime\u选择用户时区中的帮助器,但我遇到了一些问题。设置如下所示:

    <%= datetime_select :custom_daily_message, :date, :default => Time.now.in_time_zone %>
     Fri, 07 Sep 2012 11:20:00 PDT -07:00 
     Fri, 07 Sep 2012 11:20:00 UTC +00:00
在控制器中,我设置了日期:

   Time.zone = "Pacific Time (US & Canada)"
那么在我看来,我有以下几点:

    <%= datetime_select :custom_daily_message, :date, :default => Time.now.in_time_zone %>
     Fri, 07 Sep 2012 11:20:00 PDT -07:00 
     Fri, 07 Sep 2012 11:20:00 UTC +00:00
但是,当我提交表单并检查模型中的日期时,它显示以下内容:

    <%= datetime_select :custom_daily_message, :date, :default => Time.now.in_time_zone %>
     Fri, 07 Sep 2012 11:20:00 PDT -07:00 
     Fri, 07 Sep 2012 11:20:00 UTC +00:00

我希望日期是UTC,但有适当的PST偏移量。有人知道为什么会这样吗?有解决此问题的方法吗?

能否尝试执行以下操作:

在你的/config/application.rb中设置你想要的时区,对于我的应用程序,我是这样做的

config.time_zone = 'Mountain Time (US & Canada)'

如果您有任何问题,请告诉我。

我在我的模型中为中央时间做了如下操作:

def start_date super.in_time_zone("Central Time (US & Canada)") if super end def end_date super.in_time_zone("Central Time (US & Canada)") if super end 但是我还需要一个before_save来正确设置对象保存的时间

编辑:
毕竟,只要在application.rb文件中正确设置了时区,我就不需要“前保存”。

查看我的答案,如果它对您有帮助,请给它打分;嘿@uDay,谢谢你的回答。真管用!但是,您知道是否有办法在不改变整个应用程序配置的情况下实现这一点吗?如果我在模型中看到UTC格式的日期,这对我来说是可以的,但我希望它反映正确的偏移量:在命令行中执行rake time:zones:all以查看时区列表并指定所需的时区。