Convert Time from one time zone to another in Rails

前端 未结 5 770
粉色の甜心
粉色の甜心 2020-11-29 17:25

My created_at timestamps are stored in UTC:

>> Annotation.last.created_at
=> Sat, 29 Aug 2009 23:30:09 UTC +00:00

How

5条回答
  •  甜味超标
    2020-11-29 18:02

    Although this is an old question, it's worth mentioning something. In a previous reply it's suggested to use a before_filter to set the timezone temporally.

    You should never, ever do that because Time.zone stores the information in the thread, and it will probably leak to the next request handled by that thread.

    Instead you should use an around_filter to make sure that the Time.zone is reset after the request is complete. Something like:

    around_filter :set_time_zone
    
    private
    
    def set_time_zone
      old_time_zone = Time.zone
      Time.zone = current_user.time_zone if logged_in?
      yield
    ensure
      Time.zone = old_time_zone
    end
    

    Read more about this here

提交回复
热议问题