Class

Time

Inheritance
< Object
Included Modules
Comparable

Implements the extensions to the Time class that are described in the documentation for the time.rb library.

Constants

Name   Description
CommonYearMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
LeapYearMonthDays = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
MonthValue = { 'JAN' => 1, 'FEB' => 2, 'MAR' => 3, 'APR' => 4, 'MAY' => 5, 'JUN' => 6, 'JUL' => 7, 'AUG' => 8, 'SEP' => 9, 'OCT' =>10, 'NOV' =>11, 'DEC' =>12
RFC2822_DAY_NAME = [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'
RFC2822_MONTH_NAME = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
ZoneOffset = { 'UTC' => 0, # ISO 8601 'Z' => 0, # RFC 822 'UT' => 0, 'GMT' => 0, 'EST' => -5, 'EDT' => -4, 'CST' => -6, 'CDT' => -5, 'MST' => -7, 'MDT' => -6, 'PST' => -8, 'PDT' => -7, # Following definition of military zones is original one. # See RFC 1123 and RFC 2822 for the error in RFC 822. 'A' => +1, 'B' => +2, 'C' => +3, 'D' => +4, 'E' => +5, 'F' => +6, 'G' => +7, 'H' => +8, 'I' => +9, 'K' => +10, 'L' => +11, 'M' => +12, 'N' => -1, 'O' => -2, 'P' => -3, 'Q' => -4, 'R' => -5, 'S' => -6, 'T' => -7, 'U' => -8, 'V' => -9, 'W' => -10, 'X' => -11, 'Y' => -12, }

Aliases

Method Alias Description
rfc2822 → rfc822
xmlschema → iso8601

Methods

Class

Visibility Signature
public _load (p1)
public at (...)
public gm (...)
public httpdate (date)
public local (...)
public mktime (...)
public new ()
public now (...)
public parse (date, now=self.now) {|year| ...}
public rfc2822 (date)
public times ()
public utc (...)
public w3cdtf (date)
public xmlschema (date)
public yaml_new ( klass, tag, val )
public zone_offset (zone, year=self.now.year)

Instance

Visibility Signature
public + (p1)
public - (p1)
public <=> (p1)
public _dump (...)
public asctime ()
public ctime ()
public day ()
public dst? ()
public eql? (p1)
public getgm ()
public getlocal ()
public getutc ()
public gmt? ()
public gmt_offset ()
public gmtime ()
public gmtoff ()
public hash ()
public hour ()
public httpdate ()
public inspect ()
public isdst ()
public iso8601 (fraction_digits=0)
public localtime ()
public marshal_dump ()
public marshal_load (p1)
public mday ()
public min ()
public mon ()
public month ()
public rfc2822 ()
public rfc822 ()
public sec ()
public strftime (p1)
public succ ()
public to_a ()
public to_f ()
public to_i ()
public to_s ()
public to_yaml ( opts = {} )
public tv_sec ()
public tv_usec ()
public usec ()
public utc ()
public utc? ()
public utc_offset ()
public w3cdtf ()
public wday ()
public xmlschema (fraction_digits=0)
public yday ()
public year ()
public zone ()

Class Method Detail

Time._load(string) => time

Unmarshal a dumped Time object.

Time.at( aTime ) => time
Time.at( seconds [, microseconds] ) => time

Creates a new time object with the value given by aTime, or the given number of seconds (and optional microseconds) from epoch. A non-portable feature allows the offset to be negative on some systems.

   Time.at(0)            #=> Wed Dec 31 18:00:00 CST 1969
   Time.at(946702800)    #=> Fri Dec 31 23:00:00 CST 1999
   Time.at(-284061600)   #=> Sat Dec 31 00:00:00 CST 1960

Time.utc( year [, month, day, hour, min, sec, usec] ) => time
Time.utc( sec, min, hour, day, month, year, wday, yday, isdst, tz
) => time
Time.gm( year [, month, day, hour, min, sec, usec] ) => time
Time.gm( sec, min, hour, day, month, year, wday, yday, isdst, tz
) => time

Creates a time based on given values, interpreted as UTC (GMT). The year must be specified. Other values default to the minimum value for that field (and may be nil or omitted). Months may be specified by numbers from 1 to 12, or by the three-letter English month names. Hours are specified on a 24-hour clock (0..23). Raises an ArgumentError if any values are out of range. Will also accept ten arguments in the order output by Time#to_a.

   Time.utc(2000,"jan",1,20,15,1)  #=> Sat Jan 01 20:15:01 UTC 2000
   Time.gm(2000,"jan",1,20,15,1)   #=> Sat Jan 01 20:15:01 UTC 2000

httpdate(date)

Parses date as HTTP-date defined by RFC 2616 and converts it to a Time object.

ArgumentError is raised if date is not compliant with RFC 2616 or Time class cannot represent specified date.

See httpdate for more information on this format.

Time.local( year [, month, day, hour, min, sec, usec] ) => time
Time.local( sec, min, hour, day, month, year, wday, yday, isdst,
tz ) => time
Time.mktime( year, month, day, hour, min, sec, usec ) => time

Same as Time::gm, but interprets the values in the local time zone.

   Time.local(2000,"jan",1,20,15,1)   #=> Sat Jan 01 20:15:01 CST 2000

Time.local( year [, month, day, hour, min, sec, usec] ) => time
Time.local( sec, min, hour, day, month, year, wday, yday, isdst,
tz ) => time
Time.mktime( year, month, day, hour, min, sec, usec ) => time

Same as Time::gm, but interprets the values in the local time zone.

   Time.local(2000,"jan",1,20,15,1)   #=> Sat Jan 01 20:15:01 CST 2000

Time.new → time

Document-method: now

Synonym for Time.new. Returns a Time object initialized tot he current system time.

Returns a Time object initialized to the current system time. Note: The object created will be created using the resolution available on your system clock, and so may include fractional seconds.

   a = Time.new      #=> Wed Apr 09 08:56:03 CDT 2003
   b = Time.new      #=> Wed Apr 09 08:56:03 CDT 2003
   a == b            #=> false
   "%.6f" % a.to_f   #=> "1049896563.230740"
   "%.6f" % b.to_f   #=> "1049896563.231466"

Time.new → time

Synonym for Time.new. Returns a Time object initialized tot he current system time.

Returns a Time object initialized to the current system time. Note: The object created will be created using the resolution available on your system clock, and so may include fractional seconds.

   a = Time.new      #=> Wed Apr 09 08:56:03 CDT 2003
   b = Time.new      #=> Wed Apr 09 08:56:03 CDT 2003
   a == b            #=> false
   "%.6f" % a.to_f   #=> "1049896563.230740"
   "%.6f" % b.to_f   #=> "1049896563.231466"

parse(date, now=self.now) {|year| ...}

Parses date using Date._parse and converts it to a Time object.

If a block is given, the year described in date is converted by the block. For example:

    Time.parse(...) {|y| y < 100 ? (y >= 69 ? y + 1900 : y + 2000) : y}

If the upper components of the given time are broken or missing, they are supplied with those of now. For the lower components, the minimum values (1 or 0) are assumed if broken or missing. For example:

    # Suppose it is "Thu Nov 29 14:33:20 GMT 2001" now and
    # your timezone is GMT:
    Time.parse("16:30")     #=> Thu Nov 29 16:30:00 GMT 2001
    Time.parse("7/23")      #=> Mon Jul 23 00:00:00 GMT 2001
    Time.parse("Aug 31")    #=> Fri Aug 31 00:00:00 GMT 2001

Since there are numerous conflicts among locally defined timezone abbreviations all over the world, this method is not made to understand all of them. For example, the abbreviation "CST" is used variously as:

    -06:00 in America/Chicago,
    -05:00 in America/Havana,
    +08:00 in Asia/Harbin,
    +09:30 in Australia/Darwin,
    +10:30 in Australia/Adelaide,
    etc.

Based on the fact, this method only understands the timezone abbreviations described in RFC 822 and the system timezone, in the order named. (i.e. a definition in RFC 822 overrides the system timezone definition.) The system timezone is taken from Time.local(year, 1, 1).zone and Time.local(year, 7, 1).zone. If the extracted timezone abbreviation does not match any of them, it is ignored and the given time is regarded as a local time.

ArgumentError is raised if Date._parse cannot extract information from date or Time class cannot represent specified date.

This method can be used as fail-safe for other parsing methods as:

  Time.rfc2822(date) rescue Time.parse(date)
  Time.httpdate(date) rescue Time.parse(date)
  Time.xmlschema(date) rescue Time.parse(date)

A failure for Time.parse should be checked, though.

rfc2822(date)

Parses date as date-time defined by RFC 2822 and converts it to a Time object. The format is identical to the date format defined by RFC 822 and updated by RFC 1123.

ArgumentError is raised if date is not compliant with RFC 2822 or Time class cannot represent specified date.

See rfc2822 for more information on this format.

Time.times => struct_tms

Deprecated in favor of Process::times

Time.utc( year [, month, day, hour, min, sec, usec] ) => time
Time.utc( sec, min, hour, day, month, year, wday, yday, isdst, tz
) => time
Time.gm( year [, month, day, hour, min, sec, usec] ) => time
Time.gm( sec, min, hour, day, month, year, wday, yday, isdst, tz
) => time

Creates a time based on given values, interpreted as UTC (GMT). The year must be specified. Other values default to the minimum value for that field (and may be nil or omitted). Months may be specified by numbers from 1 to 12, or by the three-letter English month names. Hours are specified on a 24-hour clock (0..23). Raises an ArgumentError if any values are out of range. Will also accept ten arguments in the order output by Time#to_a.

   Time.utc(2000,"jan",1,20,15,1)  #=> Sat Jan 01 20:15:01 UTC 2000
   Time.gm(2000,"jan",1,20,15,1)   #=> Sat Jan 01 20:15:01 UTC 2000

w3cdtf(date)

xmlschema(date)

Parses date as dateTime defined by XML Schema and converts it to a Time object. The format is restricted version of the format defined by ISO 8601.

ArgumentError is raised if date is not compliant with the format or Time class cannot represent specified date.

See xmlschema for more information on this format.

yaml_new( klass, tag, val )

zone_offset(zone, year=self.now.year)

Instance Method Detail

time + numeric => time

Addition—Adds some number of seconds (possibly fractional) to time and returns that value as a new time.

   t = Time.now         #=> Wed Apr 09 08:56:03 CDT 2003
   t + (60 * 60 * 24)   #=> Thu Apr 10 08:56:03 CDT 2003

time - other_time => float
time - numeric => time

Difference—Returns a new time that represents the difference between two times, or subtracts the given number of seconds in numeric from time.

   t = Time.now       #=> Wed Apr 09 08:56:03 CDT 2003
   t2 = t + 2592000   #=> Fri May 09 08:56:03 CDT 2003
   t2 - t             #=> 2592000.0
   t2 - 2592000       #=> Wed Apr 09 08:56:03 CDT 2003

time <=> other_time => -1, 0, +1
time <=> numeric => -1, 0, +1

Comparison—Compares time with other_time or with numeric, which is the number of seconds (possibly fractional) since epoch.

   t = Time.now       #=> Wed Apr 09 08:56:03 CDT 2003
   t2 = t + 2592000   #=> Fri May 09 08:56:03 CDT 2003
   t <=> t2           #=> -1
   t2 <=> t           #=> 1
   t <=> t            #=> 0

time._dump => string

Dump time for marshaling.

time.asctime => string
time.ctime => string

Returns a canonical string representation of time.

   Time.now.asctime   #=> "Wed Apr  9 08:56:03 2003"

time.asctime => string
time.ctime => string

Returns a canonical string representation of time.

   Time.now.asctime   #=> "Wed Apr  9 08:56:03 2003"

time.day => fixnum
time.mday => fixnum

Returns the day of the month (1..n) for time.

   t = Time.now   #=> Wed Apr 09 08:56:03 CDT 2003
   t.day          #=> 9
   t.mday         #=> 9

time.isdst => true or false
time.dst? => true or false

Returns true if time occurs during Daylight Saving Time in its time zone.

   Time.local(2000, 7, 1).isdst   #=> true
   Time.local(2000, 1, 1).isdst   #=> false
   Time.local(2000, 7, 1).dst?    #=> true
   Time.local(2000, 1, 1).dst?    #=> false

time.eql?(other_time)

Return true if time and other_time are both Time objects with the same seconds and fractional seconds.

time.getgm => new_time
time.getutc => new_time

Returns a new new_time object representing time in UTC.

   t = Time.local(2000,1,1,20,15,1)   #=> Sat Jan 01 20:15:01 CST 2000
   t.gmt?                             #=> false
   y = t.getgm                        #=> Sun Jan 02 02:15:01 UTC 2000
   y.gmt?                             #=> true
   t == y                             #=> true

time.getlocal => new_time

Returns a new new_time object representing time in local time (using the local time zone in effect for this process).

   t = Time.gm(2000,1,1,20,15,1)   #=> Sat Jan 01 20:15:01 UTC 2000
   t.gmt?                          #=> true
   l = t.getlocal                  #=> Sat Jan 01 14:15:01 CST 2000
   l.gmt?                          #=> false
   t == l                          #=> true

time.getgm => new_time
time.getutc => new_time

Returns a new new_time object representing time in UTC.

   t = Time.local(2000,1,1,20,15,1)   #=> Sat Jan 01 20:15:01 CST 2000
   t.gmt?                             #=> false
   y = t.getgm                        #=> Sun Jan 02 02:15:01 UTC 2000
   y.gmt?                             #=> true
   t == y                             #=> true

time.utc? => true or false
time.gmt? => true or false

Returns true if time represents a time in UTC (GMT).

   t = Time.now                        #=> Wed Apr 09 08:56:04 CDT 2003
   t.utc?                              #=> false
   t = Time.gm(2000,"jan",1,20,15,1)   #=> Sat Jan 01 20:15:01 UTC 2000
   t.utc?                              #=> true

   t = Time.now                        #=> Wed Apr 09 08:56:03 CDT 2003
   t.gmt?                              #=> false
   t = Time.gm(2000,1,1,20,15,1)       #=> Sat Jan 01 20:15:01 UTC 2000
   t.gmt?                              #=> true

time.gmt_offset => fixnum
time.gmtoff => fixnum
time.utc_offset => fixnum

Returns the offset in seconds between the timezone of time and UTC.

   t = Time.gm(2000,1,1,20,15,1)   #=> Sat Jan 01 20:15:01 UTC 2000
   t.gmt_offset                    #=> 0
   l = t.getlocal                  #=> Sat Jan 01 14:15:01 CST 2000
   l.gmt_offset                    #=> -21600

time.gmtime => time
time.utc => time

Converts time to UTC (GMT), modifying the receiver.

   t = Time.now   #=> Wed Apr 09 08:56:03 CDT 2003
   t.gmt?         #=> false
   t.gmtime       #=> Wed Apr 09 13:56:03 UTC 2003
   t.gmt?         #=> true

   t = Time.now   #=> Wed Apr 09 08:56:04 CDT 2003
   t.utc?         #=> false
   t.utc          #=> Wed Apr 09 13:56:04 UTC 2003
   t.utc?         #=> true

time.gmt_offset => fixnum
time.gmtoff => fixnum
time.utc_offset => fixnum

Returns the offset in seconds between the timezone of time and UTC.

   t = Time.gm(2000,1,1,20,15,1)   #=> Sat Jan 01 20:15:01 UTC 2000
   t.gmt_offset                    #=> 0
   l = t.getlocal                  #=> Sat Jan 01 14:15:01 CST 2000
   l.gmt_offset                    #=> -21600

time.hash => fixnum

Return a hash code for this time object.

time.hour => fixnum

Returns the hour of the day (0..23) for time.

   t = Time.now   #=> Wed Apr 09 08:56:03 CDT 2003
   t.hour         #=> 8

httpdate()

Returns a string which represents the time as rfc1123-date of HTTP-date defined by RFC 2616:

  day-of-week, DD month-name CCYY hh:mm:ss GMT

Note that the result is always UTC (GMT).

time.inspect => string
time.to_s => string

Returns a string representing time. Equivalent to calling Time#strftime with a format string of ``%a %b %d %H:%M:%S %Z %Y’’.

   Time.now.to_s   #=> "Wed Apr 09 08:56:04 CDT 2003"

time.isdst => true or false
time.dst? => true or false

Returns true if time occurs during Daylight Saving Time in its time zone.

   Time.local(2000, 7, 1).isdst   #=> true
   Time.local(2000, 1, 1).isdst   #=> false
   Time.local(2000, 7, 1).dst?    #=> true
   Time.local(2000, 1, 1).dst?    #=> false

iso8601(fraction_digits=0)

Alias for xmlschema

time.localtime => time

Converts time to local time (using the local time zone in effect for this process) modifying the receiver.

   t = Time.gm(2000, "jan", 1, 20, 15, 1)
   t.gmt?        #=> true
   t.localtime   #=> Sat Jan 01 14:15:01 CST 2000
   t.gmt?        #=> false

marshal_dump()

undocumented

marshal_load(p1)

undocumented

time.day => fixnum
time.mday => fixnum

Returns the day of the month (1..n) for time.

   t = Time.now   #=> Wed Apr 09 08:56:03 CDT 2003
   t.day          #=> 9
   t.mday         #=> 9

time.min => fixnum

Returns the minute of the hour (0..59) for time.

   t = Time.now   #=> Wed Apr 09 08:56:03 CDT 2003
   t.min          #=> 56

time.mon => fixnum
time.month => fixnum

Returns the month of the year (1..12) for time.

   t = Time.now   #=> Wed Apr 09 08:56:03 CDT 2003
   t.mon          #=> 4
   t.month        #=> 4

time.mon => fixnum
time.month => fixnum

Returns the month of the year (1..12) for time.

   t = Time.now   #=> Wed Apr 09 08:56:03 CDT 2003
   t.mon          #=> 4
   t.month        #=> 4

rfc2822()

Returns a string which represents the time as date-time defined by RFC 2822:

  day-of-week, DD month-name CCYY hh:mm:ss zone

where zone is [+-]hhmm.

If self is a UTC time, -0000 is used as zone.

rfc822()

Alias for rfc2822

time.sec => fixnum

Returns the second of the minute (0..60)[Yes, seconds really can range from zero to 60. This allows the system to inject leap seconds every now and then to correct for the fact that years are not really a convenient number of hours long.] for time.

   t = Time.now   #=> Wed Apr 09 08:56:04 CDT 2003
   t.sec          #=> 4

time.strftime( string ) => string

Formats time according to the directives in the given format string. Any text not listed as a directive will be passed through to the output string.

Format meaning:

  %a - The abbreviated weekday name (``Sun'')
  %A - The  full  weekday  name (``Sunday'')
  %b - The abbreviated month name (``Jan'')
  %B - The  full  month  name (``January'')
  %c - The preferred local date and time representation
  %d - Day of the month (01..31)
  %H - Hour of the day, 24-hour clock (00..23)
  %I - Hour of the day, 12-hour clock (01..12)
  %j - Day of the year (001..366)
  %m - Month of the year (01..12)
  %M - Minute of the hour (00..59)
  %p - Meridian indicator (``AM''  or  ``PM'')
  %S - Second of the minute (00..60)
  %U - Week  number  of the current year,
          starting with the first Sunday as the first
          day of the first week (00..53)
  %W - Week  number  of the current year,
          starting with the first Monday as the first
          day of the first week (00..53)
  %w - Day of the week (Sunday is 0, 0..6)
  %x - Preferred representation for the date alone, no time
  %X - Preferred representation for the time alone, no date
  %y - Year without a century (00..99)
  %Y - Year with century
  %Z - Time zone name
  %% - Literal ``%'' character

   t = Time.now
   t.strftime("Printed on %m/%d/%Y")   #=> "Printed on 04/09/2003"
   t.strftime("at %I:%M%p")            #=> "at 08:56AM"

time.succ => new_time

Return a new time object, one second later than time.

time.to_a => array

Returns a ten-element array of values for time: {[ sec, min, hour, day, month, year, wday, yday, isdst, zone ]}. See the individual methods for an explanation of the valid ranges of each value. The ten elements can be passed directly to Time::utc or Time::local to create a new Time.

   now = Time.now   #=> Wed Apr 09 08:56:04 CDT 2003
   t = now.to_a     #=> [4, 56, 8, 9, 4, 2003, 3, 99, true, "CDT"]

time.to_f => float

Returns the value of time as a floating point number of seconds since epoch.

   t = Time.now
   "%10.5f" % t.to_f   #=> "1049896564.13654"
   t.to_i              #=> 1049896564

time.to_i => int
time.tv_sec => int

Returns the value of time as an integer number of seconds since epoch.

   t = Time.now
   "%10.5f" % t.to_f   #=> "1049896564.17839"
   t.to_i              #=> 1049896564

time.inspect => string
time.to_s => string

Returns a string representing time. Equivalent to calling Time#strftime with a format string of ``%a %b %d %H:%M:%S %Z %Y’’.

   Time.now.to_s   #=> "Wed Apr 09 08:56:04 CDT 2003"

to_yaml( opts = {} )

time.to_i => int
time.tv_sec => int

Returns the value of time as an integer number of seconds since epoch.

   t = Time.now
   "%10.5f" % t.to_f   #=> "1049896564.17839"
   t.to_i              #=> 1049896564

time.usec => int
time.tv_usec => int

Returns just the number of microseconds for time.

   t = Time.now        #=> Wed Apr 09 08:56:04 CDT 2003
   "%10.6f" % t.to_f   #=> "1049896564.259970"
   t.usec              #=> 259970

time.usec => int
time.tv_usec => int

Returns just the number of microseconds for time.

   t = Time.now        #=> Wed Apr 09 08:56:04 CDT 2003
   "%10.6f" % t.to_f   #=> "1049896564.259970"
   t.usec              #=> 259970

time.gmtime => time
time.utc => time

Converts time to UTC (GMT), modifying the receiver.

   t = Time.now   #=> Wed Apr 09 08:56:03 CDT 2003
   t.gmt?         #=> false
   t.gmtime       #=> Wed Apr 09 13:56:03 UTC 2003
   t.gmt?         #=> true

   t = Time.now   #=> Wed Apr 09 08:56:04 CDT 2003
   t.utc?         #=> false
   t.utc          #=> Wed Apr 09 13:56:04 UTC 2003
   t.utc?         #=> true

time.utc? => true or false
time.gmt? => true or false

Returns true if time represents a time in UTC (GMT).

   t = Time.now                        #=> Wed Apr 09 08:56:04 CDT 2003
   t.utc?                              #=> false
   t = Time.gm(2000,"jan",1,20,15,1)   #=> Sat Jan 01 20:15:01 UTC 2000
   t.utc?                              #=> true

   t = Time.now                        #=> Wed Apr 09 08:56:03 CDT 2003
   t.gmt?                              #=> false
   t = Time.gm(2000,1,1,20,15,1)       #=> Sat Jan 01 20:15:01 UTC 2000
   t.gmt?                              #=> true

time.gmt_offset => fixnum
time.gmtoff => fixnum
time.utc_offset => fixnum

Returns the offset in seconds between the timezone of time and UTC.

   t = Time.gm(2000,1,1,20,15,1)   #=> Sat Jan 01 20:15:01 UTC 2000
   t.gmt_offset                    #=> 0
   l = t.getlocal                  #=> Sat Jan 01 14:15:01 CST 2000
   l.gmt_offset                    #=> -21600

w3cdtf()

time.wday => fixnum

Returns an integer representing the day of the week, 0..6, with Sunday == 0.

   t = Time.now   #=> Wed Apr 09 08:56:04 CDT 2003
   t.wday         #=> 3

xmlschema(fraction_digits=0)

Returns a string which represents the time as dateTime defined by XML Schema:

  CCYY-MM-DDThh:mm:ssTZD
  CCYY-MM-DDThh:mm:ss.sssTZD

where TZD is Z or [+-]hh:mm.

If self is a UTC time, Z is used as TZD. [+-]hh:mm is used otherwise.

fractional_seconds specifies a number of digits of fractional seconds. Its default value is 0.

time.yday => fixnum

Returns an integer representing the day of the year, 1..366.

   t = Time.now   #=> Wed Apr 09 08:56:04 CDT 2003
   t.yday         #=> 99

time.year => fixnum

Returns the year for time (including the century).

   t = Time.now   #=> Wed Apr 09 08:56:04 CDT 2003
   t.year         #=> 2003

time.zone => string

Returns the name of the time zone used for time. As of Ruby 1.8, returns ``UTC’’ rather than ``GMT’’ for UTC times.

   t = Time.gm(2000, "jan", 1, 20, 15, 1)
   t.zone   #=> "UTC"
   t = Time.local(2000, "jan", 1, 20, 15, 1)
   t.zone   #=> "CST"