我有:
require 'date'
pap1 = Date.parse('1968-06-12')
pap2 = Date.parse('1968-12-31')
dat = Date.parse('1968-06-12')
dat2 = dat + 5 # => #<Date: 1968-06-17 ((2440025j,0s,0n),+0s,2299161j)>
在下面的示例中,我想测试日期是否属于某个日期范围。我希望日期范围pap1..pap2
涵盖dat
和dat2
。 case
等于运算符应将dat
计算在pap1
和pap2
范围内:
case dat
when (pap1..pap2)
puts 'in range'
else
puts 'not in range'
end
# >> not in range
(pap1..pap2).cover?(dat) # => true
(pap1..pap2).include?(dat) # => true
(pap1..pap2) === dat # => false
puts 'works' if (pap1..pap2) === dat # => nil
(pap1..pap2).cover?(dat2) # => true
(pap1..pap2).include?(dat2) # => true
(pap1..pap2) === dat2 # => false
puts 'works' if (pap1..pap2) === dat2 # => nil
但事实并非如此。我错过了什么吗?
答案 0 :(得分:4)
这显然是Ruby 2.3.0中的一个已知错误,在2.3.1中的某个时候已得到修复。这是错误报告Bug Report on === with Dates。答:升级。