Robert Klemme
11/20/2006 10:58:00 AM
On 20.11.2006 00:16, Sammy Larbi wrote:
> So, I was playing around a little in Ruby and noticed that |DateTime| is
> a subclass of |Date|, yet the method |today| is not defined for it.
First of all this method is a singleton method of instance Date and
these are not inherited the same way as instance methods are.
DateTime.today does not make much sense - after all, what time would you
expect? Instead there is DateTime.now:
>> Date.methods - DateTime.methods
=> ["today"]
>> DateTime.methods - Date.methods
=> ["now", "valid_time?"]
> I can certainly see how it doesn't make sense to have that method for
> that class, but I'm wondering why a Date isn't a DateTime? I suppose
> then we'd be removing the time element, so we'd get the same problem...
> but it was just striking is all.
A Date cannot be a DateTime because it lacks time. Consequently
DateTime inherits Date:
>> Date.ancestors
=> [Date, Comparable, Object, Kernel]
>> DateTime.ancestors
=> [DateTime, Date, Comparable, Object, Kernel]
Once can certainly argue whether DateTime *is a* Date or rather *has a*
Date. But it is definitively clear that Date *is not* a DateTime simply
because it does not provide the same set of information that DateTime
provides (date *and* time).
Kind regards
robert