如何在保存到rails中的数据库之前修改日期时间字段的时区



由于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

相关内容

  • 没有找到相关文章

最新更新