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