diff options
Diffstat (limited to 'lib/xmlrpc/datetime.rb')
-rw-r--r-- | lib/xmlrpc/datetime.rb | 119 |
1 files changed, 53 insertions, 66 deletions
diff --git a/lib/xmlrpc/datetime.rb b/lib/xmlrpc/datetime.rb index d6c80a2cb9..dff2304f92 100644 --- a/lib/xmlrpc/datetime.rb +++ b/lib/xmlrpc/datetime.rb @@ -1,115 +1,95 @@ -=begin -= xmlrpc/datetime.rb -Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann@ntecs.de) - -Released under the same term of license as Ruby. - -= Classes -* ((<XMLRPC::DateTime>)) - -= XMLRPC::DateTime -== Description -This class is important to handle XMLRPC (('dateTime.iso8601')) values, -correcly, because normal UNIX-dates (class (({Date}))) only handle dates -from year 1970 on, and class (({Time})) handles dates without the time -component. (({XMLRPC::DateTime})) is able to store a XMLRPC -(('dateTime.iso8601')) value correctly. - -== Class Methods ---- XMLRPC::DateTime.new( year, month, day, hour, min, sec ) - Creates a new (({XMLRPC::DateTime})) instance with the - parameters ((|year|)), ((|month|)), ((|day|)) as date and - ((|hour|)), ((|min|)), ((|sec|)) as time. - Raises (({ArgumentError})) if a parameter is out of range, or ((|year|)) is not - of type (({Integer})). - -== Instance Methods ---- XMLRPC::DateTime#year ---- XMLRPC::DateTime#month ---- XMLRPC::DateTime#day ---- XMLRPC::DateTime#hour ---- XMLRPC::DateTime#min ---- XMLRPC::DateTime#sec - Return the value of the specified date/time component. - ---- XMLRPC::DateTime#mon - Alias for ((<XMLRPC::DateTime#month>)). - ---- XMLRPC::DateTime#year=( value ) ---- XMLRPC::DateTime#month=( value ) ---- XMLRPC::DateTime#day=( value ) ---- XMLRPC::DateTime#hour=( value ) ---- XMLRPC::DateTime#min=( value ) ---- XMLRPC::DateTime#sec=( value ) - Set ((|value|)) as the new date/time component. - Raises (({ArgumentError})) if ((|value|)) is out of range, or in the case - of (({XMLRPC::DateTime#year=})) if ((|value|)) is not of type (({Integer})). - ---- XMLRPC::DateTime#mon=( value ) - Alias for ((<XMLRPC::DateTime#month=>)). - ---- XMLRPC::DateTime#to_time - Return a (({Time})) object of the date/time which (({self})) represents. - If the (('year')) is below 1970, this method returns (({nil})), - because (({Time})) cannot handle years below 1970. - The used timezone is GMT. - ---- XMLRPC::DateTime#to_date - Return a (({Date})) object of the date which (({self})) represents. - The (({Date})) object do ((*not*)) contain the time component (only date). - ---- XMLRPC::DateTime#to_a - Returns all date/time components in an array. - Returns (({[year, month, day, hour, min, sec]})). -=end - +# +# xmlrpc/datetime.rb +# Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann@ntecs.de) +# +# Released under the same term of license as Ruby. +# require "date" -module XMLRPC +module XMLRPC # :nodoc: +# 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. class DateTime + # Return the value of the specified date/time component. attr_reader :year, :month, :day, :hour, :min, :sec + # Set +value+ as the new date/time component. + # + # Raises ArgumentError if the given +value+ is out of range, or in the case + # of XMLRPC::DateTime#year= if +value+ is not of type Integer. def year= (value) raise ArgumentError, "date/time out of range" unless value.is_a? Integer @year = value end + # Set +value+ as the new date/time component. + # + # Raises an ArgumentError if the given +value+ isn't between 1 and 12. def month= (value) raise ArgumentError, "date/time out of range" unless (1..12).include? value @month = value end + # Set +value+ as the new date/time component. + # + # Raises an ArgumentError if the given +value+ isn't between 1 and 31. def day= (value) raise ArgumentError, "date/time out of range" unless (1..31).include? value @day = value end + # Set +value+ as the new date/time component. + # + # Raises an ArgumentError if the given +value+ isn't between 0 and 24. def hour= (value) raise ArgumentError, "date/time out of range" unless (0..24).include? value @hour = value end + # Set +value+ as the new date/time component. + # + # Raises an ArgumentError if the given +value+ isn't between 0 and 59. def min= (value) raise ArgumentError, "date/time out of range" unless (0..59).include? value @min = value end + # Set +value+ as the new date/time component. + # + # Raises an ArgumentError if the given +value+ isn't between 0 and 59. def sec= (value) raise ArgumentError, "date/time out of range" unless (0..59).include? value @sec = value end + # Alias for XMLRPC::DateTime#month. alias mon month + # Alias for XMLRPC::DateTime#month=. alias mon= month= + # 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. 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 + # Return a Time object of the date/time which represents +self+. + # If the <code>@year</code> is below 1970, this method returns +nil+, + # because Time cannot handle years below 1970. + # + # The timezone used is GMT. def to_time if @year >= 1970 Time.gm(*to_a) @@ -118,14 +98,21 @@ class DateTime end end + # Return a Date object of the date which represents +self+. + # + # The Date object do _not_ contain the time component (only date). def to_date Date.new(*to_a[0,3]) end + # Returns all date/time components in an array. + # + # Returns +[year, month, day, hour, min, sec]+. def to_a [@year, @month, @day, @hour, @min, @sec] end + # Returns whether or not all date/time components are an array. def ==(o) self.to_a == Array(o) rescue false end |