我已经看了几个StackOverflow问题,但似乎没有一个问题可以解决。
我的时间就是:
2012-04-19 08:42:00 +0200
这是通过表格输入的内容。但是所有内容都是相对于它所在的时区显示的。因此,因为计算机在UTC中工作,所以这次保存后就会出现:
Wed, 18 Apr 2012 23:42:00 PDT -07:00
如何保持同一时间,只需更改区域?
答案 0 :(得分:2)
我认为方法Time.use_zone可能会对您有所帮助。在我正在工作的应用程序中,我们希望根据当前用户的时区来解释时间。我们的User
课程获得了time_zone
属性,该属性只是一个有效的ActiveSupport::TimeZone
字符串,我们创建了around_filter
,如下所示:
class ApplicationController < ActionController::Base
around_filter :activate_user_time_zone
def activate_user_time_zone
return yield unless current_user # nothing to do if no user logged in
return yield unless current_user.time_zone && ActiveSupport::TimeZone[current_user.time_zone] # nothing to do if no user zone or zone is incorrect
Time.use_zone(ActiveSupport::TimeZone[current_user.time_zone]) do
yield
end
end
end
基本上,这将执行控制器操作中的代码,就像它在当前用户的时区一样。
答案 1 :(得分:1)