你可以做,使用PIP模块:
pip install DateTimeRange
可用于:
>>> start_1 = datetime.datetime(2016, 3, 16, 20, 30)
>>> end_1 = datetime.datetime(2016, 3, 17, 20, 30)
>>> start_2 = datetime.datetime(2016, 3, 14, 20, 30)
>>> end_2 = datetime.datetime(2016, 3, 17, 22, 30)
>>> dtr1 = datetimerange.DateTimeRange(start_1, end_1)
>>> dtr2 = datetimerange.DateTimeRange(start_2, end_2)
您可以检查一个范围是否相交的其他:
>>> dtr1.is_intersection(dtr2)
True
但它不显示范围是否完全在另一范围内。要检查的时间范围内是否包含了另一个,你还是要检查界限:
>>> dtr1.start_datetime in dtr2
True
>>> dtr1.end_datetime in dtr2
True
虽然我相信这是一个补丁的好机会,以实现对于datetimerange
支持作为LHS参数时尚的__contains__
方法的in
运营商。
>>> dtr1 in dtr2
[…] /datetimerange/__init__.py", line 136, in __contains__
return self.start_datetime <= value <= self.end_datetime
TypeError: unorderable types: datetime.datetime() <= DateTimeRange()
诺塔Bene的:我pushed a commit要做到这一点,所以现在以下工作:
>>> import datetime
>>> import datetimerange
>>> start_1 = datetime.datetime(2016, 3, 16, 20, 30)
>>> start_2 = datetime.datetime(2016, 3, 14, 20, 30)
>>> end_1 = datetime.datetime(2016, 3, 17, 20, 30)
>>> end_2 = datetime.datetime(2016, 3, 17, 22, 30)
>>> dtr1 = datetimerange.DateTimeRange(start_1, end_1)
>>> dtr2 = datetimerange.DateTimeRange(start_2, end_2)
>>>
>>> dtr1 in dtr2
True
>>> dtr2 in dtr1
False
HTH
我的补丁刚刚合并,所以现在用['datetimerange' v0.2.1](https://pypi.python.org/pypi/DateTimeRange/0.2.1)你可以*在dtr2中执行'dtr1' ☺ – zmo