Ruby Rails 3.1和保存到DB中的正确时间

Ruby Rails 3.1和保存到DB中的正确时间,ruby,database,ruby-on-rails-3,time,ruby-on-rails-3.1,Ruby,Database,Ruby On Rails 3,Time,Ruby On Rails 3.1,已经有几个小时了,我正在努力将时间存储到数据库表中。这样可以节省时间,如-1h。我不知道如何用正确的形状(+1h)巧妙地打印数据库中的时间。我试过设置时区之类的东西,但不幸的是什么都不管用 因此,作为解决方案,我选择以下方式: @my_obj.created_at+3600 # +1 hour 有更好的方法吗?设置服务器时区后,您可以使用: ActiveSupport::TimeZone.utc_to_local(@my_obj.created_at) ? 有关更多信息:请查看此方法的api

已经有几个小时了,我正在努力将时间存储到数据库表中。这样可以节省时间,如-1h。我不知道如何用正确的形状(+1h)巧妙地打印数据库中的时间。我试过设置时区之类的东西,但不幸的是什么都不管用

因此,作为解决方案,我选择以下方式:

@my_obj.created_at+3600 # +1 hour

有更好的方法吗?

设置服务器时区后,您可以使用:

ActiveSupport::TimeZone.utc_to_local(@my_obj.created_at)
?

有关更多信息:请查看此方法的apidock:

如果需要覆盖服务器的本地时区,可以将其设置为ApplicationController中的before\u筛选器:

before_filter :set_time_zone

def set_time_zone
  Time.zone = 'London'
end
apidock同样适用于获取更多信息:

如果您不想依赖服务器的本地时区,则始终可以使用:

@my_obj.created_at.in_time_zone('London')

您正在尝试在+1时区中显示时间吗?或者你刚刚注意到你所在的时区有1小时的差异?你能看到夏令时错误吗?“你想在+1时区显示时间吗?”-我怎么做?在显示时转换为“本地”时间。是的,我试过了。但结果是,在我的本地机器上,它运行得非常好,但问题是当我将我的应用程序部署到Heroku时——还有其他“本地时间”(比中欧时间低9小时)是的——这是因为服务器将有自己的本地时间。这只意味着您必须在自己的服务器中声明时区。如果不这样做,它将默认为服务器场所在的位置。我将编辑我的答案以反映这一点。