比较日期时间时,ruby 1.8.7和1.9.2日期范围之间不一致
Ruby 1.8.7:比较日期时间时,ruby 1.8.7和1.9.2日期范围之间不一致,ruby,Ruby,Ruby 1.8.7: > r = (Date.civil(2010, 12, 1)..Date.civil(2010, 12, 31)) > r.include? DateTime.civil(2010,12,28,15,0) => true Ruby 1.9.2 > r = (Date.civil(2010, 12, 1)..Date.civil(2010, 12, 31)) > r.include? DateTime.civil(2010,12,28,15,
> r = (Date.civil(2010, 12, 1)..Date.civil(2010, 12, 31))
> r.include? DateTime.civil(2010,12,28,15,0)
=> true
Ruby 1.9.2
> r = (Date.civil(2010, 12, 1)..Date.civil(2010, 12, 31))
> r.include? DateTime.civil(2010,12,28,15,0)
=> false
有人知道这是为什么吗?我非常喜欢1.8.7行为,这种不一致性打破了我的一些代码:(
Range
Ruby 1.9中的对象行为不同。以前,Range#include?
实际上只是做了一个大于/小于的比较。但是,现在,它迭代范围中的每个项目(在本例中是日期),并将您的值与每个值进行比较
Ruby 1.9添加了Range\cover?
,其作用类似于Range\include?
的1.8版本,但是它与Ruby 1.8不向后兼容
> r.cover? DateTime.civil(2010,12,28,15,0)
=> true
更多信息:
Range
对象在Ruby 1.9中的行为有所不同。以前,Range\include?
实际上只是进行了大于/小于比较。但是,现在,它迭代范围中的每个项目(在本例中为日期),并将您的值与每个项目进行比较
Ruby 1.9添加了Range\cover?
,其作用类似于Range\include?
的1.8版本,但是它与Ruby 1.8不向后兼容
> r.cover? DateTime.civil(2010,12,28,15,0)
=> true
更多信息: