可以直接比较DateTimes和Dates:
d = Date.new(2016, 6, 27)
dt = DateTime.new(2016, 6, 22, 10, 12, 11)
d > dt # => true
d <= dt # => false
Run Code Online (Sandbox Code Playgroud)
但是,使用==运算符检查DateTimes日期是否与某些日期相同Date始终返回false,即使它们具有相同的日期:
d = Date.new(2016, 6, 27)
dt = DateTime.new(2016, 6, 27, 10, 20, 59)
d == dt # => false
d >= dt # => false
d < dt # => true
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我认为d将被强制转换为等效的DateTime.new(2016, 6, 27, 0, 0, 0),这可以解释d < dt为真.
那么,我该如何检查是否dt与日期相同d?
在制定问题时,我认为DateTime应该有一种方法来单独获取其日期部分.我寻找它然后我发现DateTime#to_date:
d == dt.to_date # => true
Run Code Online (Sandbox Code Playgroud)
我也应该发布答案,因为我在谷歌上找不到直接的结果.