3

我有:

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涵盖datdat2case相等运算符应计入和的dat范围pap1pap2

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

但事实并非如此。我错过了什么吗?

4

1 回答 1

4

这显然是 Ruby 2.3.0 中的一个已知错误,在 2.3.1 中已修复。这是关于 === 的错误报告错误报告 Dates。答:升级。

于 2017-05-09T11:57:00.957 回答