stdlib: Date - Time should return the difference in days
Hi at the ruby/stdlib,
Computing with times and dates is very complicated.
There are so many pitfalls lurking there.
I stumbled about a seemingly simple computation,
involving Date and Time
Date.today - Time.now
=> TypeError: expected numeric
while my naively expected result can done by:
Date.today - Time.now.to_date
There must be a whole lot of good reasons why Date - Time is not allowed.
I'd like to suggest:
- improve the error message
- improve the documentation of #-
For the error message:
TypeError: expected numeric
should be improved to:
Date - Time is not allowed
The documentation of Date should state why this is so problematic.
You might even want to add a principal documentation,
about the handling of Date and Time in ruby
you can't tune a fish
Updated by shevegen (Robert A. Heiler) about 1 year ago
The error message could indeed be improved.
As for the functionality, I think matz may have to decide whether this
may fit to duck typing or not. In my opinion the distinction between
a "date" and a "time" is a bit arbitrary when we think of time as something
keeping track of seconds (and date ultimately the same, just with some
more date-specific handling of code; oddly enough I personally almost
always end up with Time, rather than Date ... but we also have DateTime
which is even stranger).