由于Rails默认以UTC格式存储日期时间,我想将时区格式从UTC更改为另一种格式,然后将其保存到数据库中。
我在表单中创建了一个新的<%= f.time_zone_select :time_zone, ActiveSupport::TimeZone.us_zones, :class => :timezone %>
字段,用户可以在其中选择时区和日期时间。
在保存到数据库之前,我想将这个datetime
列转换为用户选择的:time_zone
格式。
控制器中现有代码,但不起作用:
def create
@obj = User.new(params[:user])
@obj.start_date.in_time_zone(@obj.time_zone)
respond_to do |format|
if @obj.save
--------
看看
Time.getlocal(time_zone)
http://www.ruby-doc.org/core-2.1.2/Time.html#method-i-getlocal
它似乎可以随心所欲地将utc时间转换为任何时区的本地时间。
然后,您可以通过以下方式跳过保存到utc的转换:
class Topic < ActiveRecord::Base
self.skip_time_zone_conversion_for_attributes = [:written_on]
end
http://api.rubyonrails.org/classes/ActiveRecord/Timestamp.html