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 –