Class ActiveSupport::TimeWithZone
In: lib/active_support/time_with_zone.rb
Parent: Object

A Time-like class that can represent a time in any time zone. Necessary because standard Ruby Time instances are limited to UTC and the system‘s ENV[‘TZ’] zone.

You shouldn‘t ever need to create a TimeWithZone instance directly via new — instead, Rails provides the methods local, parse, at and now on TimeZone instances, and in_time_zone on Time and DateTime instances, for a more user-friendly syntax. Examples:

  Time.zone = 'Eastern Time (US & Canada)'        # => 'Eastern Time (US & Canada)'
  Time.zone.local(2007, 2, 10, 15, 30, 45)        # => Sat, 10 Feb 2007 15:30:45 EST -05:00
  Time.zone.parse('2007-02-01 15:30:45')          # => Sat, 10 Feb 2007 15:30:45 EST -05:00
  Time.zone.at(1170361845)                        # => Sat, 10 Feb 2007 15:30:45 EST -05:00
  Time.zone.now                                   # => Sun, 18 May 2008 13:07:55 EDT -04:00
  Time.utc(2007, 2, 10, 20, 30, 45).in_time_zone  # => Sat, 10 Feb 2007 15:30:45 EST -05:00

See TimeZone and ActiveSupport::CoreExtensions::Time::Zones for further documentation for these methods.

TimeWithZone instances implement the same API as Ruby Time instances, so that Time and TimeWithZone instances are interchangable. Examples:

  t = Time.zone.now                     # => Sun, 18 May 2008 13:27:25 EDT -04:00
  t.hour                                # => 13
  t.dst?                                # => true
  t.utc_offset                          # => -14400
  t.zone                                # => "EDT"
  t.to_s(:rfc822)                       # => "Sun, 18 May 2008 13:27:25 -0400"
  t + 1.day                             # => Mon, 19 May 2008 13:27:25 EDT -04:00
  t.beginning_of_year                   # => Tue, 01 Jan 2008 00:00:00 EST -05:00
  t > Time.utc(1999)                    # => true
  t.is_a?(Time)                         # => true
  t.is_a?(ActiveSupport::TimeWithZone)  # => true

Methods

+   -   <=>   acts_like_time?   advance   ago   between?   comparable_time   dst?   eql?   formatted_offset   freeze   getgm   getlocal   getutc   gmt?   gmt_offset   gmtime   gmtoff   hash   httpdate   in_time_zone   inspect   is_a?   isdst   iso8601   kind_of?   localtime   marshal_dump   marshal_load   method_missing   new   period   respond_to?   rfc2822   rfc822   since   strftime   time   to_a   to_datetime   to_f   to_i   to_json   to_s   to_time   to_yaml   tv_sec   usec   utc   utc?   utc_offset   xmlschema   zone  

Included Modules

Comparable

Attributes

time_zone  [R] 

Public Class methods

Public Instance methods

Use the time in UTC for comparisons.

So that self acts_like?(:time).

comparable_time()

Alias for utc

Neuter freeze because freezing can cause problems with lazy loading of attributes.

getgm()

Alias for utc

getlocal()

Alias for localtime

getutc()

Alias for utc

gmt?()

Alias for utc?

gmt_offset()

Alias for utc_offset

gmtime()

Alias for utc

gmtoff()

Alias for utc_offset

hash()

Alias for to_i

Returns the simultaneous time in Time.zone, or the specified zone.

Say we‘re a Time to thwart type checking.

isdst()

Alias for dst?

iso8601()

Alias for xmlschema

kind_of?(klass)

Alias for is_a?

Returns a Time.local() instance of the simultaneous time in your system‘s ENV[‘TZ’] zone

Send the missing method to time instance, and wrap result in a new TimeWithZone with the existing time_zone.

Returns the underlying TZInfo::TimezonePeriod.

Ensure proxy class responds to all methods that underlying time instance responds to.

rfc822()

Alias for rfc2822

Replaces %Z and %z directives with zone and formatted_offset, respectively, before passing to Time#strftime, so that zone information is correct

Returns a Time or DateTime instance that represents the time in time_zone.

:db format outputs time in UTC; all others output time in local. Uses TimeWithZone‘s strftime, so %Z and %z work correctly.

A TimeWithZone acts like a Time, so just return self.

tv_sec()

Alias for to_i

Returns a Time or DateTime instance that represents the time in UTC.

Time uses zone to display the time zone abbreviation, so we‘re duck-typing it.

[Validate]