How to combine overlapping time ranges (time ranges union)

后端 未结 10 1380
渐次进展
渐次进展 2020-12-08 05:19

I have an array with several time ranges inside:

[Tue, 24 May 2011 08:00:00 CEST +02:00..Tue, 24 May 2011 13:00:00 CEST +02:00,
 Tue, 24 May 2011 16:30:00 CE         


        
10条回答
  •  南方客
    南方客 (楼主)
    2020-12-08 05:57

    Dont you just want to find the smallest first value and the largest last value from the set of arrays?

    ranges = [Tue, 24 May 2011 08:00:00 CEST +02:00..Tue, 24 May 2011 13:00:00 CEST +02:00,
     Tue, 24 May 2011 16:30:00 CEST +02:00..Tue, 24 May 2011 18:00:00 CEST +02:00,
     Tue, 24 May 2011 08:00:00 CEST +02:00..Tue, 24 May 2011 09:00:00 CEST +02:00,
     Tue, 24 May 2011 15:30:00 CEST +02:00..Tue, 24 May 2011 18:00:00 CEST +02:00]
    
    union = [ranges.collect(&:first).sort.first, ranges.collect(&:last).sort.last]
    

提交回复
热议问题