How Do I Find Common Dates in Two Ranges

2019-07-16 00:47发布

问题:

I have 2 date ranges, start_date1..end_date1 and start_date2..end_date2, is there an easy "ruby" way to find all the dates that are in both ranges?

回答1:

You can use

(start_date1..end_date1).to_set & (start_date2..end_date2).to_set

here's a fully worked example:

require 'date'
require 'set'
((Date.today - 3)..(Date.today + 2)).to_set & (Date.today..(Date.today + 5)).to_set

if you're counting characters, you can also just do

(start_date1..end_date1).to_set & start_date2..end_date2

but I think the original version is clearer.