比方说,我有红宝石下列日期范围:如何找到在多个日期范围打破了红宝石
月05日210星期六,01一月2011..Tue,2011年2月1日
星期三,05一月2011..Thu,2011年2月17日
周三,02二月2011..Tue,2011年3月1日
孙,01月2012..Thu,2012
通过什么样的过程,我可以采用所有这四个范围,并获得输出结果,告诉我在2011年3月2日星期三的范围内有一个突破?
编辑 塞尔吉奥是正确的,似乎是没有什么内置的,我可以神交这个像这样:
x = Range.new(Date.parse('2011-01-01'), Date.parse('2011-02-01'))
r = Range.new(Date.parse('2011-01-05'), Date.parse('2011-02-17'))
y = Range.new(Date.parse('2011-02-02'), Date.parse('2011-03-01'))
z = Range.new(Date.parse('2012-01-01'), Date.parse('2012-01-05'))
ranges = [x,y,z,r]
dates = ranges.collect!{|r|r.to_a}.flatten!.uniq!.sort!
dates.delete_if do |date|
index = ranges.index(date)
next_date = ranges[index + 1]
next_date == date + 1 || next_date.nil?
end
还在寻找最佳的解决方案,但。
有没有内置的功能做到这一点。试着弄清楚一些事情。 – 2012-01-06 20:23:23
什么是“范围内的突破”?也许你可以把一些有效的Ruby代码放在一起。 – tokland 2012-01-06 20:40:13
好吧,你可能是指“什么日期开始在范围内的差距”?但是如果范围产生了几个缺口,你只需要第一个呢? – tokland 2012-01-06 20:57:40