Ruby 两个日期间隔的交集

Ruby 两个日期间隔的交集,ruby,date,Ruby,Date,我有四个约会: 前两个是一个月的开始和结束 start_m = Time.new(2010,1).beginning_of_month end_m = Time.new(2010,1).end_of_month 最后两个是d1和d2,分别是d1end\m和d1->d2 例如: start_m = 2011-01-01 end_m = 2011-01-31 d1 = 2010-12-20 d2 = 2011-01-11 结果将是 [1,2,3 ... 11] 有没有一个简单的方法来完成这个交

我有四个约会:

前两个是一个月的开始和结束

start_m = Time.new(2010,1).beginning_of_month
end_m = Time.new(2010,1).end_of_month
最后两个是
d1
d2
,分别是
d1
end\m
d1
->
d2

例如:

start_m = 2011-01-01
end_m = 2011-01-31
d1 = 2010-12-20
d2 = 2011-01-11
结果将是

[1,2,3 ... 11]
有没有一个简单的方法来完成这个交叉口

require 'date'

start_m = Date.parse('2011-01-01')
end_m = Date.parse('2011-01-31')
d1 = Date.parse('2010-12-20')
d2 = Date.parse('2011-01-11')

puts (start_m..end_m).to_a & (d1..d2).to_a

有关详细信息,请参阅文档。输出:

2011-01-01
2011-01-02
2011-01-03
2011-01-04
2011-01-05
2011-01-06
2011-01-07
2011-01-08
2011-01-09
2011-01-10
2011-01-11

有关详细信息,请参阅文档。输出:

2011-01-01
2011-01-02
2011-01-03
2011-01-04
2011-01-05
2011-01-06
2011-01-07
2011-01-08
2011-01-09
2011-01-10
2011-01-11

我的方法是使用ruby中的range.step函数,使用
(开始到结束到)。步骤(60*60*24)。到a

然后需要使用
Time.at(element.day

对这两个数组执行此操作时,您可以执行
array1&array2
,这将为您提供所需的结果


这只是一个建议,也许有更好的方法

我的方法是使用ruby中的range.step函数,使用
(开始到结束到结束)。步骤(60*60*24)。到a

然后需要使用
Time.at(element.day

对这两个数组执行此操作时,您可以执行
array1&array2
,这将为您提供所需的结果

这只是一个建议,也许有更好的方法