首页 > 解决方案 > 如何检查日期范围是否在Ruby中的另一个日期范围之间

问题描述

所以我有一个可能类似于的日期范围,((Date.today - 90)..Date.today)我想检查是否(Date.today - 90)在另一个日期范围中的第一个值之后,并且在日期范围Date.today中的最终值之前。我已经尝试了以下

((Date.parse('25-12-2000')..(Date.parse('25-12-2020')).include?((Date.today - 90)..Date.today)

这返回错误。如果我替换include?member?或,我也会得到错误cover?

我如何让它返回 true?语法更改还是我需要在 Ruby 中使用不同的方法?

标签: ruby-on-railsruby

解决方案


您可以使用cover?检查日期范围是否涵盖这两个值:

range = Date.new(2000, 12, 25)..Date.new(2020, 12, 25)

range.cover?(Date.today - 90) && range.cover?(Date.today)
#=> true

或使用beginandend如果你有两个范围:

range = Date.new(2000, 12, 25)..Date.new(2020, 12, 25)
other = (Date.today - 90)..Date.today

range.cover?(other.begin) && range.cover?(other.end)
#=> true

推荐阅读