Class: DateTime

Inherits:
Date
  • Object
show all
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

Instance Method Summary collapse

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_dateObject



1846
# File 'lib/rubysl/date/date.rb', line 1846

def to_date() Date.new!(jd_to_ajd(jd, 0, 0), 0, @sg) end

#to_datetimeObject



1847
# File 'lib/rubysl/date/date.rb', line 1847

def to_datetime() self end

#to_sObject

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_timeObject



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