Bug #7326 » time_patch0002.diff
time.c | ||
---|---|---|
/*
|
||
* Document-method: now
|
||
*
|
||
* Synonym for <code>Time.new</code>. Returns a +Time+ object
|
||
* Alias for Time::new. Returns a Time object
|
||
* initialized to the current system time.
|
||
*/
|
||
... | ... | |
* Time.new -> time
|
||
* Time.new(year, month=nil, day=nil, hour=nil, min=nil, sec=nil, utc_offset=nil) -> time
|
||
*
|
||
* Returns a <code>Time</code> object.
|
||
* Returns a Time object.
|
||
*
|
||
* It is initialized to the current system time if no argument.
|
||
* <b>Note:</b> The object created will be created using the
|
||
... | ... | |
* Time.at(seconds_with_frac) -> time
|
||
* Time.at(seconds, microseconds_with_frac) -> time
|
||
*
|
||
* Creates a new time object with the value given by <i>time</i>,
|
||
* the given number of <i>seconds_with_frac</i>, or
|
||
* <i>seconds</i> and <i>microseconds_with_frac</i> from the Epoch.
|
||
* <i>seconds_with_frac</i> and <i>microseconds_with_frac</i>
|
||
* can be Integer, Float, Rational, or other Numeric.
|
||
* Creates a new Time object with the value given by +time+,
|
||
* the given number of +seconds_with_frac+, or
|
||
* +seconds+ and +microseconds_with_frac+ since the Epoch.
|
||
* +seconds_with_frac+ and +microseconds_with_frac+
|
||
* can be integer, Float, Rational, or other Numeric.
|
||
* non-portable feature allows the offset to be negative on some systems.
|
||
*
|
||
* If a numeric argument is given, the result is in local time.
|
||
*
|
||
* Time.at(0) #=> 1969-12-31 18:00:00 -0600
|
||
* Time.at(Time.at(0)) #=> 1969-12-31 18:00:00 -0600
|
||
* Time.at(946702800) #=> 1999-12-31 23:00:00 -0600
|
||
* Time.at(-284061600) #=> 1960-12-31 00:00:00 -0600
|
||
* Time.at(946684800.2).usec #=> 200000
|
||
* Time.at(946684800, 123456.789).nsec #=> 123456789
|
||
* Time.at(0) #=> 1969-12-31 18:00:00 -0600
|
||
* Time.at(Time.at(0)) #=> 1969-12-31 18:00:00 -0600
|
||
* Time.at(946702800) #=> 1999-12-31 23:00:00 -0600
|
||
* Time.at(-284061600) #=> 1960-12-31 00:00:00 -0600
|
||
* Time.at(946684800.2).usec #=> 200000
|
||
* Time.at(946684800, 123456.789).nsec #=> 123456789
|
||
*/
|
||
static VALUE
|
||
... | ... | |
*
|
||
* 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 <code>nil</code> or omitted). Months may
|
||
* 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 <code>ArgumentError</code> if any values are out of range. Will
|
||
* also accept ten arguments in the order output by
|
||
* <code>Time#to_a</code>.
|
||
* <i>sec_with_frac</i> and <i>usec_with_frac</i> can have a fractional part.
|
||
* an ArgumentError if any values are out of range. Will
|
||
* also accept ten arguments in the order output by Time#to_a.
|
||
*
|
||
* +sec_with_frac+ and +usec_with_frac+ can have a fractional part.
|
||
*
|
||
* Time.utc(2000,"jan",1,20,15,1) #=> 2000-01-01 20:15:01 UTC
|
||
* Time.gm(2000,"jan",1,20,15,1) #=> 2000-01-01 20:15:01 UTC
|
||
... | ... | |
* Time.mktime(year, month, day, hour, min, sec, usec_with_frac) -> time
|
||
* Time.mktime(sec, min, hour, day, month, year, wday, yday, isdst, tz) -> time
|
||
*
|
||
* Same as <code>Time::gm</code>, but interprets the values in the
|
||
* Same as Time::gm, but interprets the values in the
|
||
* local time zone.
|
||
*
|
||
* Time.local(2000,"jan",1,20,15,1) #=> 2000-01-01 20:15:01 -0600
|
||
... | ... | |
* time.to_i -> int
|
||
* time.tv_sec -> int
|
||
*
|
||
* Returns the value of <i>time</i> as an integer number of seconds
|
||
* Returns the value of _time_ as an integer number of seconds
|
||
* since the Epoch.
|
||
*
|
||
* t = Time.now
|
||
... | ... | |
* call-seq:
|
||
* time.to_f -> float
|
||
*
|
||
* Returns the value of <i>time</i> as a floating point number of
|
||
* Returns the value of _time_ as a floating point number of
|
||
* seconds since the Epoch.
|
||
*
|
||
* t = Time.now
|
||
... | ... | |
* call-seq:
|
||
* time.to_r -> a_rational
|
||
*
|
||
* Returns the value of <i>time</i> as a rational number of seconds
|
||
* Returns the value of _time_ as a rational number of seconds
|
||
* since the Epoch.
|
||
*
|
||
* t = Time.now
|
||
* p t.to_r #=> (1270968792716287611/1000000000)
|
||
*
|
||
* This methods is intended to be used to get an accurate value
|
||
* representing nanoseconds from the Epoch. You can use this
|
||
* to convert time to another Epoch.
|
||
* representing the nanoseconds since the Epoch. You can use this method
|
||
* to convert _time_ to another Epoch.
|
||
*/
|
||
static VALUE
|
||
... | ... | |
* time.usec -> int
|
||
* time.tv_usec -> int
|
||
*
|
||
* Returns just the number of microseconds for <i>time</i>.
|
||
* Returns the number of microseconds for _time_.
|
||
*
|
||
* t = Time.now #=> 2007-11-19 08:03:26 -0600
|
||
* "%10.6f" % t.to_f #=> "1195481006.775195"
|
||
... | ... | |
* time.nsec -> int
|
||
* time.tv_nsec -> int
|
||
*
|
||
* Returns just the number of nanoseconds for <i>time</i>.
|
||
* Returns the number of nanoseconds for _time_.
|
||
*
|
||
* t = Time.now #=> 2007-11-17 15:18:03 +0900
|
||
* "%10.9f" % t.to_f #=> "1195280283.536151409"
|
||
* t.nsec #=> 536151406
|
||
*
|
||
* The lowest digit of to_f and nsec is different because
|
||
* The lowest digits of #to_f and #nsec are different because
|
||
* IEEE 754 double is not accurate enough to represent
|
||
* nanoseconds from the Epoch.
|
||
* The accurate value is returned by nsec.
|
||
... | ... | |
* call-seq:
|
||
* time.subsec -> number
|
||
*
|
||
* Returns just the fraction for <i>time</i>.
|
||
* Returns the fraction for _time_.
|
||
*
|
||
* The result is possibly rational.
|
||
*
|
||
... | ... | |
* "%10.9f" % t.to_f #=> "1238074392.940563917"
|
||
* t.subsec #=> (94056401/100000000)
|
||
*
|
||
* The lowest digit of to_f and subsec is different because
|
||
* The lowest digits of #to_f and #subsec are different because
|
||
* IEEE 754 double is not accurate enough to represent
|
||
* the rational.
|
||
* The accurate value is returned by subsec.
|
||
... | ... | |
* call-seq:
|
||
* time.eql?(other_time)
|
||
*
|
||
* Return <code>true</code> if <i>time</i> and <i>other_time</i> are
|
||
* both <code>Time</code> objects with the same seconds and fractional
|
||
* seconds.
|
||
* Returns +true+ if _time_ and +other_time+ are
|
||
* both Time objects with the same seconds and fractional seconds.
|
||
*/
|
||
static VALUE
|
||
... | ... | |
* time.utc? -> true or false
|
||
* time.gmt? -> true or false
|
||
*
|
||
* Returns <code>true</code> if <i>time</i> represents a time in UTC
|
||
* (GMT).
|
||
* Returns +true+ if _time_ represents a time in UTC (GMT).
|
||
*
|
||
* t = Time.now #=> 2007-11-19 08:15:23 -0600
|
||
* t.utc? #=> false
|
||
... | ... | |
* call-seq:
|
||
* time.hash -> fixnum
|
||
*
|
||
* Return a hash code for this time object.
|
||
* Returns a hash code for this Time object.
|
||
*/
|
||
static VALUE
|
||
... | ... | |
* time.localtime -> time
|
||
* time.localtime(utc_offset) -> time
|
||
*
|
||
* Converts <i>time</i> to local time (using the local time zone in
|
||
* Converts _time_ to local time (using the local time zone in
|
||
* effect for this process) modifying the receiver.
|
||
*
|
||
* If _utc_offset_ is given, it is used instead of the local time.
|
||
... | ... | |
* time.gmtime -> time
|
||
* time.utc -> time
|
||
*
|
||
* Converts <i>time</i> to UTC (GMT), modifying the receiver.
|
||
* Converts _time_ to UTC (GMT), modifying the receiver.
|
||
*
|
||
* t = Time.now #=> 2007-11-19 08:18:31 -0600
|
||
* t.gmt? #=> false
|
||
... | ... | |
* time.getlocal -> new_time
|
||
* time.getlocal(utc_offset) -> new_time
|
||
*
|
||
* Returns a new <code>new_time</code> object representing <i>time</i> in
|
||
* Returns a new Time object representing _time_ in
|
||
* local time (using the local time zone in effect for this process).
|
||
*
|
||
* If _utc_offset_ is given, it is used instead of the local time.
|
||
... | ... | |
* time.getgm -> new_time
|
||
* time.getutc -> new_time
|
||
*
|
||
* Returns a new <code>new_time</code> object representing <i>time</i> in
|
||
* UTC.
|
||
* Returns a new Time object representing _time_ in UTC.
|
||
*
|
||
* t = Time.local(2000,1,1,20,15,1) #=> 2000-01-01 20:15:01 -0600
|
||
* t.gmt? #=> false
|
||
... | ... | |
* time.asctime -> string
|
||
* time.ctime -> string
|
||
*
|
||
* Returns a canonical string representation of <i>time</i>.
|
||
* Returns a canonical string representation of _time_.
|
||
*
|
||
* Time.now.asctime #=> "Wed Apr 9 08:56:03 2003"
|
||
*/
|
||
... | ... | |
* time + numeric -> time
|
||
*
|
||
* Addition---Adds some number of seconds (possibly fractional) to
|
||
* <i>time</i> and returns that value as a new time.
|
||
* _time_ and returns that value as a new Time object.
|
||
*
|
||
* t = Time.now #=> 2007-11-19 08:22:21 -0600
|
||
* t + (60 * 60 * 24) #=> 2007-11-20 08:22:21 -0600
|
||
... | ... | |
* call-seq:
|
||
* time.succ -> new_time
|
||
*
|
||
* Return a new time object, one second later than <code>time</code>.
|
||
* Returns a new Time object, one second later than _time_.
|
||
* Time#succ is obsolete since 1.9.2 for time is not a discrete value.
|
||
*
|
||
* t = Time.now #=> 2007-11-19 08:23:57 -0600
|
||
... | ... | |
* time.round([ndigits]) -> new_time
|
||
*
|
||
* Rounds sub seconds to a given precision in decimal digits (0 digits by default).
|
||
* It returns a new time object.
|
||
* It returns a new Time object.
|
||
* _ndigits_ should be zero or positive integer.
|
||
*
|
||
* require 'time'
|
||
... | ... | |
* call-seq:
|
||
* time.sec -> fixnum
|
||
*
|
||
* Returns the second of the minute (0..60) for <i>time</i>.
|
||
* Returns the second of the minute (0..60) for _time_.
|
||
*
|
||
* <em>[Yes, seconds range from zero to 60. This allows the system to inject
|
||
* leap seconds. See http://en.wikipedia.org/wiki/Leap_second for further
|
||
... | ... | |
* call-seq:
|
||
* time.min -> fixnum
|
||
*
|
||
* Returns the minute of the hour (0..59) for <i>time</i>.
|
||
* Returns the minute of the hour (0..59) for _time_.
|
||
*
|
||
* t = Time.now #=> 2007-11-19 08:25:51 -0600
|
||
* t.min #=> 25
|
||
... | ... | |
* call-seq:
|
||
* time.hour -> fixnum
|
||
*
|
||
* Returns the hour of the day (0..23) for <i>time</i>.
|
||
* Returns the hour of the day (0..23) for _time_.
|
||
*
|
||
* t = Time.now #=> 2007-11-19 08:26:20 -0600
|
||
* t.hour #=> 8
|
||
... | ... | |
* time.day -> fixnum
|
||
* time.mday -> fixnum
|
||
*
|
||
* Returns the day of the month (1..n) for <i>time</i>.
|
||
* Returns the day of the month (1..n) for _time_.
|
||
*
|
||
* t = Time.now #=> 2007-11-19 08:27:03 -0600
|
||
* t.day #=> 19
|
||
... | ... | |
* time.mon -> fixnum
|
||
* time.month -> fixnum
|
||
*
|
||
* Returns the month of the year (1..12) for <i>time</i>.
|
||
* Returns the month of the year (1..12) for _time_.
|
||
*
|
||
* t = Time.now #=> 2007-11-19 08:27:30 -0600
|
||
* t.mon #=> 11
|
||
... | ... | |
* call-seq:
|
||
* time.year -> fixnum
|
||
*
|
||
* Returns the year for <i>time</i> (including the century).
|
||
* Returns the year for _time_ (including the century).
|
||
*
|
||
* t = Time.now #=> 2007-11-19 08:27:51 -0600
|
||
* t.year #=> 2007
|
||
... | ... | |
* call-seq:
|
||
* time.sunday? -> true or false
|
||
*
|
||
* Returns <code>true</code> if <i>time</i> represents Sunday.
|
||
* Returns +true+ if _time_ represents Sunday.
|
||
*
|
||
* t = Time.local(1990, 4, 1) #=> 1990-04-01 00:00:00 -0600
|
||
* t.sunday? #=> true
|
||
... | ... | |
* call-seq:
|
||
* time.monday? -> true or false
|
||
*
|
||
* Returns <code>true</code> if <i>time</i> represents Monday.
|
||
* Returns +true+ if _time_ represents Monday.
|
||
*
|
||
* t = Time.local(2003, 8, 4) #=> 2003-08-04 00:00:00 -0500
|
||
* p t.monday? #=> true
|
||
... | ... | |
* call-seq:
|
||
* time.tuesday? -> true or false
|
||
*
|
||
* Returns <code>true</code> if <i>time</i> represents Tuesday.
|
||
* Returns +true+ if _time_ represents Tuesday.
|
||
*
|
||
* t = Time.local(1991, 2, 19) #=> 1991-02-19 00:00:00 -0600
|
||
* p t.tuesday? #=> true
|
||
... | ... | |
* call-seq:
|
||
* time.wednesday? -> true or false
|
||
*
|
||
* Returns <code>true</code> if <i>time</i> represents Wednesday.
|
||
* Returns +true+ if _time_ represents Wednesday.
|
||
*
|
||
* t = Time.local(1993, 2, 24) #=> 1993-02-24 00:00:00 -0600
|
||
* p t.wednesday? #=> true
|
||
... | ... | |
* call-seq:
|
||
* time.thursday? -> true or false
|
||
*
|
||
* Returns <code>true</code> if <i>time</i> represents Thursday.
|
||
* Returns +true+ if _time_ represents Thursday.
|
||
*
|
||
* t = Time.local(1995, 12, 21) #=> 1995-12-21 00:00:00 -0600
|
||
* p t.thursday? #=> true
|
||
... | ... | |
* call-seq:
|
||
* time.friday? -> true or false
|
||
*
|
||
* Returns <code>true</code> if <i>time</i> represents Friday.
|
||
* Returns +true+ if _time_ represents Friday.
|
||
*
|
||
* t = Time.local(1987, 12, 18) #=> 1987-12-18 00:00:00 -0600
|
||
* t.friday? #=> true
|
||
... | ... | |
* call-seq:
|
||
* time.saturday? -> true or false
|
||
*
|
||
* Returns <code>true</code> if <i>time</i> represents Saturday.
|
||
* Returns +true+ if _time_ represents Saturday.
|
||
*
|
||
* t = Time.local(2006, 6, 10) #=> 2006-06-10 00:00:00 -0500
|
||
* t.saturday? #=> true
|
||
... | ... | |
* time.isdst -> true or false
|
||
* time.dst? -> true or false
|
||
*
|
||
* Returns <code>true</code> if <i>time</i> occurs during Daylight
|
||
* Returns +true+ if _time_ occurs during Daylight
|
||
* Saving Time in its time zone.
|
||
*
|
||
* # CST6CDT:
|
||
... | ... | |
* call-seq:
|
||
* time.zone -> string
|
||
*
|
||
* Returns the name of the time zone used for <i>time</i>. As of Ruby
|
||
* 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)
|
||
... | ... | |
* time.gmtoff -> fixnum
|
||
* time.utc_offset -> fixnum
|
||
*
|
||
* Returns the offset in seconds between the timezone of <i>time</i>
|
||
* Returns the offset in seconds between the timezone of _time_
|
||
* and UTC.
|
||
*
|
||
* t = Time.gm(2000,1,1,20,15,1) #=> 2000-01-01 20:15:01 UTC
|
||
... | ... | |
* call-seq:
|
||
* time.to_a -> array
|
||
*
|
||
* Returns a ten-element <i>array</i> of values for <i>time</i>:
|
||
* {<code>[ sec, min, hour, day, month, year, wday, yday, isdst, zone
|
||
* ]</code>}. See the individual methods for an explanation of the
|
||
* 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 <code>Time::utc</code> or <code>Time::local</code> to create a
|
||
* new <code>Time</code>.
|
||
* to Time::utc or Time::local to create a
|
||
* new Time object.
|
||
*
|
||
* t = Time.now #=> 2007-11-19 08:36:01 -0600
|
||
* now = t.to_a #=> [1, 36, 8, 19, 11, 2007, 1, 323, false, "CST"]
|
||
... | ... | |
* call-seq:
|
||
* time.strftime( string ) -> string
|
||
*
|
||
* Formats <i>time</i> according to the directives in the given format
|
||
* string.
|
||
* The directives begins with a percent (%) character.
|
||
* Formats _time_ according to the directives in the given format string.
|
||
*
|
||
* The directives begin with a percent (%) character.
|
||
* Any text not listed as a directive will be passed through to the
|
||
* output string.
|
||
*
|
||
* The directive consists of a percent (%) character,
|
||
* zero or more flags, optional minimum field width,
|
||
* optional modifier and a conversion specifier
|
||
* as follows.
|
||
* as follows:
|
||
*
|
||
* %<flags><width><modifier><conversion>
|
||
*
|
||
* Flags:
|
||
* - don't pad a numerical output.
|
||
* _ use spaces for padding.
|
||
* 0 use zeros for padding.
|
||
* ^ upcase the result string.
|
||
* # change case.
|
||
* : use colons for %z.
|
||
* - don't pad a numerical output
|
||
* _ use spaces for padding
|
||
* 0 use zeros for padding
|
||
* ^ upcase the result string
|
||
* # change case
|
||
* : use colons for %z
|
||
*
|
||
* The minimum field width specifies the minimum width.
|
||
*
|
||
* The modifier is "E" and "O".
|
||
* The modifiers are "E" and "O".
|
||
* They are ignored.
|
||
*
|
||
* Format directives:
|
||
... | ... | |
* call-seq:
|
||
* Time._load(string) -> time
|
||
*
|
||
* Unmarshal a dumped +Time+ object.
|
||
* Unmarshal a dumped Time object.
|
||
*/
|
||
static VALUE
|
||
... | ... | |
* with each other -- times that are apparently equal when displayed may be
|
||
* different when compared.
|
||
*
|
||
* Since Ruby 1.9.2, Time implementation uses a signed 63 bit integer, Bignum or Rational.
|
||
* Since Ruby 1.9.2, Time implementation uses a signed 63 bit integer,
|
||
* Bignum or Rational.
|
||
* The integer is a number of nanoseconds since the _Epoch_ which can
|
||
* represent 1823-11-12 to 2116-02-20.
|
||
* When Bignum or Rational is used (before 1823, after 2116, under nanosecond),
|
||
... | ... | |
*
|
||
* == Creating a new Time instance
|
||
*
|
||
* You can create a new instance of time with Time.new. This will use the
|
||
* current system time. Time.now is a synonym for this. You can also
|
||
* pass parts of the time to Time.new such as year, month, minute, etc. When
|
||
* You can create a new instance of Time with Time::new. This will use the
|
||
* current system time. Time::now is an alias for this. You can also
|
||
* pass parts of the time to Time::new such as year, month, minute, etc. When
|
||
* you want to construct a time this way you must pass at least a year. If you
|
||
* pass the year with nothing else time with default to January 1 of that year
|
||
* at 00:00:00 with the current system timezone. Here are some examples:
|
||
... | ... | |
* You can also use #gm, #local and #utc to infer GMT, local and UTC
|
||
* timezones instead of using the current system setting.
|
||
*
|
||
* You can also create a new time using Time.at which takes the number of
|
||
* You can also create a new time using Time::at which takes the number of
|
||
* seconds (or fraction of seconds) since the {Unix
|
||
* Epoch}[http://en.wikipedia.org/wiki/Unix_time].
|
||
*
|
||
... | ... | |
*
|
||
* == Working with an instance of Time
|
||
*
|
||
* Once you have an instance of time there is a multitude of things you can do
|
||
* with it. Below are some examples. For all of the following examples, we
|
||
* Once you have an instance of Time there is a multitude of things you can
|
||
* do with it. Below are some examples. For all of the following examples, we
|
||
* will work on the assumption that you have done the following:
|
||
*
|
||
* t = Time.new(1993, 02, 24, 12, 0, 0, "+09:00")
|