Ruby on rails Rails:计算两个日期范围之间的重叠天数

Ruby on rails Rails:计算两个日期范围之间的重叠天数,ruby-on-rails,Ruby On Rails,好吧,假设我们有三个日期范围 1. date1=01-20-2015..02-15-2015 2. date2 = 01-01-2015..01-31-2015 3. date3 = 02-01-2015..02-28-2015 我需要一种方法来计算date1和date2之间重叠了多少天(本例中为10天)。 日期1和日期3之间重叠了多少天(本例中为15天) 有没有一个简单的计算方法 如果您有: r1= (Date.new(2015, 01, 20))..(Date.new(2015, 2, 1

好吧,假设我们有三个日期范围

1. date1=01-20-2015..02-15-2015
2. date2 = 01-01-2015..01-31-2015
3. date3 = 02-01-2015..02-28-2015
我需要一种方法来计算date1和date2之间重叠了多少天(本例中为10天)。 日期1和日期3之间重叠了多少天(本例中为15天)

有没有一个简单的计算方法

如果您有:

r1= (Date.new(2015, 01, 20))..(Date.new(2015, 2, 15))
r2= (Date.new(2015, 01, 1))..(Date.new(2015, 1, 31))
您可以通过以下方式检查交叉点:

r1.to_a & r2.to_a
=> [Tue, 20 Jan 2015,
 Wed, 21 Jan 2015,
 Thu, 22 Jan 2015,
 Fri, 23 Jan 2015,
 Sat, 24 Jan 2015,
 Sun, 25 Jan 2015,
 Mon, 26 Jan 2015,
 Tue, 27 Jan 2015,
 Wed, 28 Jan 2015,
 Thu, 29 Jan 2015,
 Fri, 30 Jan 2015,
 Sat, 31 Jan 2015]
但成本是将范围转换为数组


你可以注意到
(r1.to_a&r2.to_a)。count#=>12
,而不是
10
,这完全取决于你是否包括边界。

有一个名为“验证重叠”的gem。我想应该能帮到你。非常感谢,这确实是一个创造性的方式来解决这个问题。