Ruby:两个范围之间的交集
发布时间:2020-12-16 22:06:12 所属栏目:百科 来源:网络整理
导读:在ruby中,给定两个日期范围,我想要表示两个日期范围的交集的范围,如果没有交点,则为零.例如: (Date.new(2011,1,1)..Date.new(2011,15)) (Date.new(2011,10)..Date.new(2011,2,15))= Mon,10 Jan 2011..Sat,15 Jan 2011 编辑:应该说我希望它适用于DateTime,
在ruby中,给定两个日期范围,我想要表示两个日期范围的交集的范围,如果没有交点,则为零.例如:
(Date.new(2011,1,1)..Date.new(2011,15)) & (Date.new(2011,10)..Date.new(2011,2,15)) => Mon,10 Jan 2011..Sat,15 Jan 2011 编辑:应该说我希望它适用于DateTime,所以间隔可以缩短到mins和secs: (DateTime.new(2011,22,45)..Date.new(2011,15)) => Sat,01 Jan 2011 22:45:00 +0000..Tue,15 Feb 2011 解决方法require 'date' class Range def intersection(other) return nil if (self.max < other.begin or other.max < self.begin) [self.begin,other.begin].max..[self.max,other.max].min end alias_method :&,:intersection end p (Date.new(2011,15)) #<Date: 2011-01-10 ((2455572j,0s,0n),+0s,2299161j)>..#<Date: 2011-01-15 ((2455577j,2299161j)> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |