123456789_123456789_123456789_123456789_123456789_

Class: XMLRPC::DateTime

Relationships & Source Files
Inherits: Object
Defined in: lib/xmlrpc/datetime.rb

Overview

This class is important to handle ::XMLRPC dateTime.iso8601 values, correctly, 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.

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

Class Method Summary

Instance Attribute Summary

  • #day rw

    Return the value of the specified date/time component.

  • #day=(value) rw

    Set value as the new date/time component.

  • #hour rw

    Return the value of the specified date/time component.

  • #hour=(value) rw

    Set value as the new date/time component.

  • #min rw

    Return the value of the specified date/time component.

  • #min=(value) rw

    Set value as the new date/time component.

  • #mon rw

    Alias for #month.

  • #month (also: #mon) rw

    Return the value of the specified date/time component.

  • #month=(value) (also: #mon=) rw

    Set value as the new date/time component.

  • #sec rw

    Return the value of the specified date/time component.

  • #sec=(value) rw

    Set value as the new date/time component.

  • #year rw

    Return the value of the specified date/time component.

  • #year=(value) rw

    Set value as the new date/time component.

Instance Method Summary

  • #==(o)

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

  • #to_a

    Returns all date/time components in an array.

  • #to_date

    Return a Date object of the date which represents self.

  • #to_time

    Return a Time object of the date/time which represents self.

Constructor Details

.new(year, month, day, hour, min, sec) ⇒ DateTime

Creates a new 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.

[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 84

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

Instance Attribute Details

#day (rw)

Return the value of the specified date/time component.

[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 21

attr_reader :year, :month, :day, :hour, :min, :sec

#day=(value) (rw)

Set value as the new date/time component.

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

Raises:

  • (ArgumentError)
[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 43

def day= (value)
  raise ArgumentError, "date/time out of range" unless (1..31).include? value
  @day = value
end

#hour (rw)

Return the value of the specified date/time component.

[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 21

attr_reader :year, :month, :day, :hour, :min, :sec

#hour=(value) (rw)

Set value as the new date/time component.

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

Raises:

  • (ArgumentError)
[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 51

def hour= (value)
  raise ArgumentError, "date/time out of range" unless (0..24).include? value
  @hour = value
end

#min (rw)

Return the value of the specified date/time component.

[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 21

attr_reader :year, :month, :day, :hour, :min, :sec

#min=(value) (rw)

Set value as the new date/time component.

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

Raises:

  • (ArgumentError)
[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 59

def min= (value)
  raise ArgumentError, "date/time out of range" unless (0..59).include? value
  @min = value
end

#mon (rw)

Alias for #month.

[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 73

alias mon  month

#month (rw) Also known as: #mon

Return the value of the specified date/time component.

[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 21

attr_reader :year, :month, :day, :hour, :min, :sec

#month=(value) (rw) Also known as: #mon=

Set value as the new date/time component.

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

Raises:

  • (ArgumentError)
[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 35

def month= (value)
  raise ArgumentError, "date/time out of range" unless (1..12).include? value
  @month = value
end

#sec (rw)

Return the value of the specified date/time component.

[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 21

attr_reader :year, :month, :day, :hour, :min, :sec

#sec=(value) (rw)

Set value as the new date/time component.

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

Raises:

  • (ArgumentError)
[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 67

def sec= (value)
  raise ArgumentError, "date/time out of range" unless (0..59).include? value
  @sec = value
end

#year (rw)

Return the value of the specified date/time component.

[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 21

attr_reader :year, :month, :day, :hour, :min, :sec

#year=(value) (rw)

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.

Raises:

  • (ArgumentError)
[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 27

def year= (value)
  raise ArgumentError, "date/time out of range" unless value.is_a? Integer
  @year = value
end

Instance Method Details

#==(o)

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

[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 117

def ==(o)
  self.to_a == Array(o) rescue false
end

#to_a

Returns all date/time components in an array.

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

[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 112

def to_a
  [@year, @month, @day, @hour, @min, @sec]
end

#to_date

Return a Date object of the date which represents self.

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

[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 105

def to_date
  Date.new(*to_a[0,3])
end

#to_time

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.

[ GitHub ]

  
# File 'lib/xmlrpc/datetime.rb', line 94

def to_time
  if @year >= 1970
    Time.gm(*to_a)
  else
    nil
  end
end