Bug #15712

DateTime#=== should be defined and compare date and time instead of just the date

Added by localhostdotdev (localhost .dev) almost 2 years ago. Updated 5 months ago.

Target version:
ruby -v:
ruby 2.7.0dev (2019-03-18 trunk 67296) [x86_64-darwin17]


DateTime#=== is inherited from Date#=== without overwriting the #=== method, this leads to DateTime#=== comparing only dates and ignore the time part., 2, 3) ===, 2, 3, 12)
=> false

I think this is not the expected behavior but existing code might rely on this.



Updated by hsbt (Hiroshi SHIBATA) almost 2 years ago

localhostdotdev (localhost .dev)

I fixed an issue of our tracker. I deleted 15713-15716.

Updated by nobu (Nobuyoshi Nakada) almost 2 years ago

  • Status changed from Open to Feedback

What version of DateTime do you use?

With the trunk I got:

require 'date'
dt1 =, 2, 3)
dt2 =, 2, 3, 12)
p dt1 === dt2 #=> true
p dt1 == dt2  #=> false

Updated by localhostdotdev (localhost .dev) almost 2 years ago

nobu (Nobuyoshi Nakada) Not sure why I wrote false (maybe I confused === with == in my testing), I'm getting true on ruby 2.5.3, 2.6.1, 2.6.2 and ruby-head (2.7.0 (same as the one registered in the issue)).

rvm ruby-head do ruby -e 'require "date"; dt1 =, 2, 3); dt2 =, 2, 3, 12); puts "=== #{dt1 === dt2}"; puts "== #{dt1 == dt2 }"; puts RUBY_VERSION'

Updated by matz (Yukihiro Matsumoto) 5 months ago

I admit it is a bug. But we consider use of DateTime should be discouraged. So we keep this bug behavior for compatibility's sake.
We are going to describe obsoletion in the document.


Updated by jeremyevans0 (Jeremy Evans) 5 months ago

  • Status changed from Feedback to Closed

DateTime deprecation documentation was added to date:

Date#=== is describes the current behavior as only considering the date, and uses examples with DateTime, so I think the situation is fully documented and I'm closing this.

Also available in: Atom PDF