ActiveSupport::CoreExtensions::Time::Zones::ClassMethods


Files

Methods

Attributes

[RW]

Public Instance methods

current ()

Returns Time.zone.now when config.time_zone is set, otherwise just returns Time.now.

use_zone (time_zone) {|| ...}

Allows override of Time.zone locally inside supplied block; resets Time.zone to existing value when done.

zone ()

Returns the TimeZone for the current request, if this has been set (via Time.zone=). If Time.zone has not been set for the current request, returns the TimeZone specified in config.time_zone.

zone= (time_zone)

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 — current_user.time_zone just needs to return a string identifying the user‘s preferred TimeZone:

  class ApplicationController < ActionController::Base
    before_filter :set_time_zone

    def set_time_zone
      Time.zone = current_user.time_zone
    end
  end