DateTime is not a Date?

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.

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.

On 20.11.2006 00:16, Sammy L. 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