zone=(time_zone) public

Sets Time.zone to a TimeZone object for the current request/thread.

This method accepts any of the following:

  • A Rails TimeZone object.

  • An identifier for a Rails TimeZone object (e.g., “Eastern Time (US & Canada)”, -5.hours).

  • A TZInfo::Timezone object.

  • An identifier for a TZInfo::Timezone object (e.g., “America/New_York”).

Here’s an example of how you might set Time.zone on a per request basis and reset it when the request is done. current_user.time_zone just needs to return a string identifying the user’s preferred time zone:

class ApplicationController < ActionController::Base
  around_filter :set_time_zone

  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
end
Show source
Register or log in to add new notes.