class XMLRPC::DateTime

This class is important to handle XMLRPC dateTime.iso8601 values, correcly, because normal UNIX-dates, ie: Date, only handle dates from year 1970 on, and ruby's native Time class handles dates without the time component.

XMLRPC::DateTime is able to store a XMLRPC dateTime.iso8601 value correctly.

Attributes

day[R]

Return the value of the specified date/time component.

hour[R]

Return the value of the specified date/time component.

min[R]

Return the value of the specified date/time component.

mon[R]

Return the value of the specified date/time component.

month[R]

Return the value of the specified date/time component.

sec[R]

Return the value of the specified date/time component.

year[R]

Return the value of the specified date/time component.

Public Class Methods

new(year, month, day, hour, min, sec) click to toggle source

Creates a new XMLRPC::DateTime instance with the parameters year, month, day as date and hour, min, sec as time.

Raises an ArgumentError if a parameter is out of range, or if year is not of the Integer type.

# File lib/xmlrpc/datetime.rb, line 83
def initialize(year, month, day, hour, min, sec)
  self.year, self.month, self.day = year, month, day
  self.hour, self.min, self.sec   = hour, min, sec
end

Public Instance Methods

==(o) click to toggle source

Returns whether or not all date/time components are an array.

# File lib/xmlrpc/datetime.rb, line 116
def ==(o)
  self.to_a == Array(o) rescue false
end
day=(value) click to toggle source

Set value as the new date/time component.

Raises an ArgumentError if the given value isn't between 1 and 31.

# File lib/xmlrpc/datetime.rb, line 42
def day= (value)
  raise ArgumentError, "date/time out of range" unless (1..31).include? value
  @day = value
end
hour=(value) click to toggle source

Set value as the new date/time component.

Raises an ArgumentError if the given value isn't between 0 and 24.

# File lib/xmlrpc/datetime.rb, line 50
def hour= (value)
  raise ArgumentError, "date/time out of range" unless (0..24).include? value
  @hour = value
end
min=(value) click to toggle source

Set value as the new date/time component.

Raises an ArgumentError if the given value isn't between 0 and 59.

# File lib/xmlrpc/datetime.rb, line 58
def min= (value)
  raise ArgumentError, "date/time out of range" unless (0..59).include? value
  @min = value
end
mon=(value)

Alias for #month=.

Alias for: month=
month=(value) click to toggle source

Set value as the new date/time component.

Raises an ArgumentError if the given value isn't between 1 and 12.

# File lib/xmlrpc/datetime.rb, line 34
def month= (value)
  raise ArgumentError, "date/time out of range" unless (1..12).include? value
  @month = value
end
Also aliased as: mon=
sec=(value) click to toggle source

Set value as the new date/time component.

Raises an ArgumentError if the given value isn't between 0 and 59.

# File lib/xmlrpc/datetime.rb, line 66
def sec= (value)
  raise ArgumentError, "date/time out of range" unless (0..59).include? value
  @sec = value
end
to_a() click to toggle source

Returns all date/time components in an array.

Returns +[year, month, day, hour, min, sec]+.

# File lib/xmlrpc/datetime.rb, line 111
def to_a
  [@year, @month, @day, @hour, @min, @sec]
end
to_date() click to toggle source

Return a Date object of the date which represents self.

The Date object do not contain the time component (only date).

# File lib/xmlrpc/datetime.rb, line 104
def to_date
  Date.new(*to_a[0,3])
end
to_time() click to toggle source

Return a Time object of the date/time which represents self. If the @year is below 1970, this method returns nil, because Time cannot handle years below 1970.

The timezone used is GMT.

# File lib/xmlrpc/datetime.rb, line 93
def to_time
  if @year >= 1970
    Time.gm(*to_a)
  else
    nil
  end
end
year=(value) click to toggle source

Set value as the new date/time component.

Raises ArgumentError if the given value is out of range, or in the case of #year= if value is not of type Integer.

# File lib/xmlrpc/datetime.rb, line 26
def year= (value)
  raise ArgumentError, "date/time out of range" unless value.is_a? Integer
  @year = value
end