Class: DateTime
- Defined in:
- lib/rubysl/date/date.rb,
lib/date/format.rb,
lib/rubysl/date/date.rb
Overview
Class representing a date and time.
See the documentation to the file date.rb for an overview.
DateTime objects are immutable once created.
Other methods.
The following methods are defined in Date, but declared private there. They are made public in DateTime. They are documented here.
hour()
Get the hour-of-the-day of the time. This is given using the 24-hour clock, counting from midnight. The first hour after midnight is hour 0; the last hour of the day is hour 23.
min()
Get the minute-of-the-hour of the time.
sec()
Get the second-of-the-minute of the time.
sec_fraction()
Get the fraction of a second of the time. This is returned as a Rational
.
zone()
Get the time zone as a String. This is representation of the time offset such as “+1000”, not the true time-zone name.
offset()
Get the time zone offset as a fraction of a day. This is returned as a Rational
.
new_offset(of=0)
Create a new DateTime object, identical to the current one, except with a new time zone offset of of
. of
is the new offset from UTC as a fraction of a day.
Constant Summary
Constants inherited from Date
Date::ABBR_DAYNAMES, Date::ABBR_MONTHNAMES, Date::DAYNAMES, Date::ENGLAND, Date::GREGORIAN, Date::HALF_DAYS_IN_DAY, Date::HOURS_IN_DAY, Date::ITALY, Date::JULIAN, Date::LD_EPOCH_IN_CJD, Date::MILLISECONDS_IN_DAY, Date::MILLISECONDS_IN_SECOND, Date::MINUTES_IN_DAY, Date::MJD_EPOCH_IN_AJD, Date::MJD_EPOCH_IN_CJD, Date::MONTHNAMES, Date::NANOSECONDS_IN_DAY, Date::NANOSECONDS_IN_SECOND, Date::SECONDS_IN_DAY, Date::UNIX_EPOCH_IN_AJD, Date::UNIX_EPOCH_IN_CJD
Class Method Summary collapse
- ._strptime(str, fmt = '%FT%T%z') ⇒ Object
-
.civil(y = -4712,, m = 1, d = 1, h = 0, min = 0, s = 0, of = 0, sg = ITALY) ⇒ Object
(also: new)
Create a new DateTime object corresponding to the specified Civil Date and hour
h
, minutemin
, seconds
. -
.commercial(y = -4712,, w = 1, d = 1, h = 0, min = 0, s = 0, of = 0, sg = ITALY) ⇒ Object
Create a new DateTime object corresponding to the specified Commercial Date and hour
h
, minutemin
, seconds
. -
.httpdate(str = 'Mon, 01 Jan -4712 00:00:00 GMT', sg = ITALY) ⇒ Object
:nodoc:.
-
.iso8601(str = '-4712-01-01T00:00:00+00:00', sg = ITALY) ⇒ Object
:nodoc:.
-
.jd(jd = 0, h = 0, min = 0, s = 0, of = 0, sg = ITALY) ⇒ Object
Create a new DateTime object corresponding to the specified Julian Day Number
jd
and hourh
, minutemin
, seconds
. -
.jisx0301(str = '-4712-01-01T00:00:00+00:00', sg = ITALY) ⇒ Object
:nodoc:.
-
.ordinal(y = -4712,, d = 1, h = 0, min = 0, s = 0, of = 0, sg = ITALY) ⇒ Object
Create a new DateTime object corresponding to the specified Ordinal Date and hour
h
, minutemin
, seconds
. -
.parse(str = '-4712-01-01T00:00:00+00:00', comp = true, sg = ITALY) ⇒ Object
Create a new DateTime object by parsing from a String, without specifying the format.
-
.rfc2822(str = 'Mon, 1 Jan -4712 00:00:00 +0000', sg = ITALY) ⇒ Object
(also: rfc822)
:nodoc:.
-
.rfc3339(str = '-4712-01-01T00:00:00+00:00', sg = ITALY) ⇒ Object
:nodoc:.
-
.strptime(str = '-4712-01-01T00:00:00+00:00', fmt = '%FT%T%z', sg = ITALY) ⇒ Object
Create a new DateTime object by parsing from a String according to a specified format.
-
.xmlschema(str = '-4712-01-01T00:00:00+00:00', sg = ITALY) ⇒ Object
:nodoc:.
Instance Method Summary collapse
- #iso8601(n = 0) ⇒ Object
- #jisx0301(n = 0) ⇒ Object
- #rfc3339(n = 0) ⇒ Object
- #strftime(fmt = '%FT%T%:z') ⇒ Object
- #to_date ⇒ Object
- #to_datetime ⇒ Object
-
#to_s ⇒ Object
4p.
- #to_time ⇒ Object
-
#xmlschema(n = 0) ⇒ Object
:nodoc:.
Methods inherited from Date
#+, #-, #<<, #<=>, #===, #>>, _httpdate, _iso8601, _jisx0301, _parse, _rfc2822, _rfc3339, _xmlschema, #ajd, #amjd, #asctime, #cwday, #cweek, #cwyear, #day_fraction, #downto, #england, #eql?, #gregorian, #gregorian?, gregorian_leap?, #hash, #httpdate, #initialize, #inspect, #italy, #jd, #julian, #julian?, julian_leap?, #ld, #leap?, #marshal_dump, #marshal_load, #mday, #mjd, #mon, #new_start, #next, #next_day, #next_month, #next_year, once, #prev_day, #prev_month, #prev_year, #rfc2822, #rfc822, #start, #step, today, #upto, valid_civil?, valid_commercial?, valid_jd?, valid_ordinal?, #wday, #yday, #year
Constructor Details
This class inherits a constructor from Date
Class Method Details
._strptime(str, fmt = '%FT%T%z') ⇒ Object
1300 1301 1302 |
# File 'lib/date/format.rb', line 1300 def self._strptime(str, fmt='%FT%T%z') super(str, fmt) end |
.civil(y = -4712,, m = 1, d = 1, h = 0, min = 0, s = 0, of = 0, sg = ITALY) ⇒ Object Also known as: new
Create a new DateTime object corresponding to the specified Civil Date and hour h
, minute min
, second s
.
The 24-hour clock is used. Negative values of h
, min
, and sec
are treating as counting backwards from the end of the next larger unit (e.g. a min
of -2 is treated as 58). No wraparound is performed. If an invalid time portion is specified, an ArgumentError is raised.
of
is the offset from UTC as a fraction of a day (defaults to 0). sg
specifies the Day of Calendar Reform.
y
defaults to -4712, m
to 1, and d
to 1; this is Julian Day Number day 0. The time values default to 0.
1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 |
# File 'lib/rubysl/date/date.rb', line 1624 def self.civil(y=-4712, m=1, d=1, h=0, min=0, s=0, of=0, sg=ITALY) unless (jd = _valid_civil?(y, m, d, sg)) && (fr = _valid_time?(h, min, s)) raise ArgumentError, 'invalid date' end if String === of of = Rational(zone_to_diff(of) || 0, 86400) end new!(jd_to_ajd(jd, fr, of), of, sg) end |
.commercial(y = -4712,, w = 1, d = 1, h = 0, min = 0, s = 0, of = 0, sg = ITALY) ⇒ Object
Create a new DateTime object corresponding to the specified Commercial Date and hour h
, minute min
, second s
.
The 24-hour clock is used. Negative values of h
, min
, and sec
are treating as counting backwards from the end of the next larger unit (e.g. a min
of -2 is treated as 58). No wraparound is performed. If an invalid time portion is specified, an ArgumentError is raised.
of
is the offset from UTC as a fraction of a day (defaults to 0). sg
specifies the Day of Calendar Reform.
y
defaults to -4712, w
to 1, and d
to 1; this is Julian Day Number day 0. The time values default to 0.
1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 |
# File 'lib/rubysl/date/date.rb', line 1652 def self.commercial(y=-4712, w=1, d=1, h=0, min=0, s=0, of=0, sg=ITALY) unless (jd = _valid_commercial?(y, w, d, sg)) && (fr = _valid_time?(h, min, s)) raise ArgumentError, 'invalid date' end if String === of of = Rational(zone_to_diff(of) || 0, 86400) end new!(jd_to_ajd(jd, fr, of), of, sg) end |
.httpdate(str = 'Mon, 01 Jan -4712 00:00:00 GMT', sg = ITALY) ⇒ Object
:nodoc:
1764 1765 1766 1767 |
# File 'lib/rubysl/date/date.rb', line 1764 def self.httpdate(str='Mon, 01 Jan -4712 00:00:00 GMT', sg=ITALY) # :nodoc: elem = _httpdate(str) new_by_frags(elem, sg) end |
.iso8601(str = '-4712-01-01T00:00:00+00:00', sg = ITALY) ⇒ Object
:nodoc:
1742 1743 1744 1745 |
# File 'lib/rubysl/date/date.rb', line 1742 def self.iso8601(str='-4712-01-01T00:00:00+00:00', sg=ITALY) # :nodoc: elem = _iso8601(str) new_by_frags(elem, sg) end |
.jd(jd = 0, h = 0, min = 0, s = 0, of = 0, sg = ITALY) ⇒ Object
Create a new DateTime object corresponding to the specified Julian Day Number jd
and hour h
, minute min
, second s
.
The 24-hour clock is used. Negative values of h
, min
, and sec
are treating as counting backwards from the end of the next larger unit (e.g. a min
of -2 is treated as 58). No wraparound is performed. If an invalid time portion is specified, an ArgumentError is raised.
of
is the offset from UTC as a fraction of a day (defaults to 0). sg
specifies the Day of Calendar Reform.
All day/time values default to 0.
1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 |
# File 'lib/rubysl/date/date.rb', line 1574 def self.jd(jd=0, h=0, min=0, s=0, of=0, sg=ITALY) unless (jd = _valid_jd?(jd, sg)) && (fr = _valid_time?(h, min, s)) raise ArgumentError, 'invalid date' end if String === of of = Rational(zone_to_diff(of) || 0, 86400) end new!(jd_to_ajd(jd, fr, of), of, sg) end |
.jisx0301(str = '-4712-01-01T00:00:00+00:00', sg = ITALY) ⇒ Object
:nodoc:
1769 1770 1771 1772 |
# File 'lib/rubysl/date/date.rb', line 1769 def self.jisx0301(str='-4712-01-01T00:00:00+00:00', sg=ITALY) # :nodoc: elem = _jisx0301(str) new_by_frags(elem, sg) end |
.ordinal(y = -4712,, d = 1, h = 0, min = 0, s = 0, of = 0, sg = ITALY) ⇒ Object
Create a new DateTime object corresponding to the specified Ordinal Date and hour h
, minute min
, second s
.
The 24-hour clock is used. Negative values of h
, min
, and sec
are treating as counting backwards from the end of the next larger unit (e.g. a min
of -2 is treated as 58). No wraparound is performed. If an invalid time portion is specified, an ArgumentError is raised.
of
is the offset from UTC as a fraction of a day (defaults to 0). sg
specifies the Day of Calendar Reform.
y
defaults to -4712, and d
to 1; this is Julian Day Number day 0. The time values default to 0.
1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 |
# File 'lib/rubysl/date/date.rb', line 1599 def self.ordinal(y=-4712, d=1, h=0, min=0, s=0, of=0, sg=ITALY) unless (jd = _valid_ordinal?(y, d, sg)) && (fr = _valid_time?(h, min, s)) raise ArgumentError, 'invalid date' end if String === of of = Rational(zone_to_diff(of) || 0, 86400) end new!(jd_to_ajd(jd, fr, of), of, sg) end |
.parse(str = '-4712-01-01T00:00:00+00:00', comp = true, sg = ITALY) ⇒ Object
Create a new DateTime object by parsing from a String, without specifying the format.
str
is a String holding a date-time representation. comp
specifies whether to interpret 2-digit years as 19XX (>= 69) or 20XX (< 69); the default is not to. The method will attempt to parse a date-time from the String using various heuristics; see #_parse in date/format.rb for more details. If parsing fails, an ArgumentError will be raised.
The default str
is ‘-4712-01-01T00:00:00+00:00’; this is Julian Day Number day 0.
sg
specifies the Day of Calendar Reform.
1737 1738 1739 1740 |
# File 'lib/rubysl/date/date.rb', line 1737 def self.parse(str='-4712-01-01T00:00:00+00:00', comp=true, sg=ITALY) elem = _parse(str, comp) new_by_frags(elem, sg) end |
.rfc2822(str = 'Mon, 1 Jan -4712 00:00:00 +0000', sg = ITALY) ⇒ Object Also known as: rfc822
:nodoc:
1757 1758 1759 1760 |
# File 'lib/rubysl/date/date.rb', line 1757 def self.rfc2822(str='Mon, 1 Jan -4712 00:00:00 +0000', sg=ITALY) # :nodoc: elem = _rfc2822(str) new_by_frags(elem, sg) end |
.rfc3339(str = '-4712-01-01T00:00:00+00:00', sg = ITALY) ⇒ Object
:nodoc:
1747 1748 1749 1750 |
# File 'lib/rubysl/date/date.rb', line 1747 def self.rfc3339(str='-4712-01-01T00:00:00+00:00', sg=ITALY) # :nodoc: elem = _rfc3339(str) new_by_frags(elem, sg) end |
.strptime(str = '-4712-01-01T00:00:00+00:00', fmt = '%FT%T%z', sg = ITALY) ⇒ Object
Create a new DateTime object by parsing from a String according to a specified format.
str
is a String holding a date-time representation. fmt
is the format that the date-time is in. See date/format.rb for details on supported formats.
The default str
is ‘-4712-01-01T00:00:00+00:00’, and the default fmt
is ‘%FT%T%z’. This gives midnight on Julian Day Number day 0.
sg
specifies the Day of Calendar Reform.
An ArgumentError will be raised if str
cannot be parsed.
1717 1718 1719 1720 |
# File 'lib/rubysl/date/date.rb', line 1717 def self.strptime(str='-4712-01-01T00:00:00+00:00', fmt='%FT%T%z', sg=ITALY) elem = _strptime(str, fmt) new_by_frags(elem, sg) end |
.xmlschema(str = '-4712-01-01T00:00:00+00:00', sg = ITALY) ⇒ Object
:nodoc:
1752 1753 1754 1755 |
# File 'lib/rubysl/date/date.rb', line 1752 def self.xmlschema(str='-4712-01-01T00:00:00+00:00', sg=ITALY) # :nodoc: elem = _xmlschema(str) new_by_frags(elem, sg) end |
Instance Method Details
#iso8601(n = 0) ⇒ Object
1316 1317 1318 |
# File 'lib/date/format.rb', line 1316 def iso8601(n=0) super() + iso8601_timediv(n) end |
#jisx0301(n = 0) ⇒ Object
1324 1325 1326 |
# File 'lib/date/format.rb', line 1324 def jisx0301(n=0) super() + iso8601_timediv(n) end |
#rfc3339(n = 0) ⇒ Object
1320 |
# File 'lib/date/format.rb', line 1320 def rfc3339(n=0) iso8601(n) end |
#strftime(fmt = '%FT%T%:z') ⇒ Object
1296 1297 1298 |
# File 'lib/date/format.rb', line 1296 def strftime(fmt='%FT%T%:z') super(fmt) end |
#to_date ⇒ Object
1846 |
# File 'lib/rubysl/date/date.rb', line 1846 def to_date() Date.new!(jd_to_ajd(jd, 0, 0), 0, @sg) end |
#to_datetime ⇒ Object
1847 |
# File 'lib/rubysl/date/date.rb', line 1847 def to_datetime() self end |
#to_s ⇒ Object
4p
1777 1778 1779 1780 |
# File 'lib/rubysl/date/date.rb', line 1777 def to_s # 4p format('%.4d-%02d-%02dT%02d:%02d:%02d%s', year, mon, mday, hour, min, sec, zone) end |
#to_time ⇒ Object
1837 1838 1839 1840 1841 1842 1843 1844 |
# File 'lib/rubysl/date/date.rb', line 1837 def to_time d = new_offset(0) d.instance_eval do Time.utc(year, mon, mday, hour, min, sec + sec_fraction) end. getlocal end |
#xmlschema(n = 0) ⇒ Object
:nodoc:
1322 |
# File 'lib/date/format.rb', line 1322 def xmlschema(n=0) iso8601(n) end |