1
我确实喜欢下面的模型方法。它对我来说工作得很好。但我不知道它是否适用于所有情况。如何更新rails datetime字段以匹配用户时区?
服务器将所有时间记录存储为UTC格式。所以在这里我得到了当前用户格式化的偏移量,基于此我更新了endtime。
def update_job
off = Time.now.formatted_offset
off_split = off.gsub(off.first, '').split(':')
if off.first == '+'
off_dat = self.enddate = self.enddate - off_split.first.to_i.hours
off_dat = self.enddate = self.enddate - off_split.last.to_i.minutes if off_split.length == 2
elsif off.first == '-'
off_dat = self.enddate = self.enddate + off_split.first.to_i.hours
off_dat = self.enddate = self.enddate + off_split.last.to_i.minutes if off_split.length == 2
end
self.update_attributes(enddate: off_dat)
end
我可以使用上面的代码吗?
您可以根据此应用程序更改时区(在这段时间将以UTC存储,但在获取时您将获得您在config中设置的时区)http://api.rubyonrails .org/classes/ActiveSupport/TimeZone.html,您不需要以UTC存储它,您可以以任何区域格式存储它,活动记录会感知它并将其存储在UTC –