你可以做,使用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