Python-将日期与时间段重叠

Python-将日期与时间段重叠,python,overlap,python-datetime,Python,Overlap,Python Datetime,我有这个代码是从搜索StackOverFlow中找到的。它可以很好地满足我的需要,因为它可以检查这些日期时间的所有可能重叠。问题是我需要将其扩展到不同的用例 from datetime import datetime from collections import namedtuple Range = namedtuple('Range', ['start', 'end']) work_periods = [] r1 = Range(start=datetime(2012, 1, 15), en

我有这个代码是从搜索StackOverFlow中找到的。它可以很好地满足我的需要,因为它可以检查这些日期时间的所有可能重叠。问题是我需要将其扩展到不同的用例

from datetime import datetime
from collections import namedtuple
Range = namedtuple('Range', ['start', 'end'])
work_periods = []
r1 = Range(start=datetime(2012, 1, 15), end=datetime(2012, 3, 10))
r2 = Range(start=datetime(2012, 3, 7), end=datetime(2012, 5, 15))
r3 = Range(start=datetime(2012, 5, 14), end=datetime(2012, 7, 13))
r4 = Range(start=datetime(2013, 3, 20), end=datetime(2013, 9, 15))
r5 = Range(start=datetime(2012, 1, 20), end=datetime(2012, 4, 5))
ranges = [r1,r2,r3,r4]

test = []
overlapping = [ [x,y] for x in ranges for y in ranges if x is not y and x[1]>y[0] and x[0]<y[0] ]
for x in overlapping:
    test.append(x)
从日期时间导入日期时间
从集合导入namedtuple
Range=namedtuple('Range',['start','end']))
工作周期=[]
r1=范围(开始=日期时间(2012,1,15),结束=日期时间(2012,3,10))
r2=范围(开始=日期时间(2012,3,7),结束=日期时间(2012,5,15))
r3=范围(开始=日期时间(2012,5,14),结束=日期时间(2012,7,13))
r4=范围(开始=日期时间(2013,3,20),结束=日期时间(2013,9,15))
r5=范围(开始=日期时间(2012,1,20),结束=日期时间(2012,4,5))
范围=[r1、r2、r3、r4]
测试=[]
重叠=[[x,y]表示范围内的x,如果x不是y,则表示范围内的y,并且x[1]>y[0]和x[0]