আপনি নীচে দেখতে পারেন হিসাবে আমি একটি টাইমঞ্জের শ্রেণি প্রয়োগ করেছি।
Get_overlaped_range প্রথমে একটি সাধারণ শর্ত দ্বারা সমস্ত অ ওভারল্যাপযুক্ত বিকল্পগুলিকে অগ্রাহ্য করে এবং তারপরে সমস্ত সম্ভাব্য বিকল্প বিবেচনা করে ওভারল্যাপযুক্ত পরিসীমা গণনা করে।
দিনের পরিমাণ পাওয়ার জন্য আপনাকে get_overlaped_range থেকে ফিরে আসা টাইমরেঞ্জ মানটি গ্রহণ করতে হবে এবং সময়কালকে 60 * 60 * 24 দিয়ে ভাগ করতে হবে।
class TimeRange(object):
def __init__(self, start, end):
self.start = start
self.end = end
self.duration = self.end - self.start
def is_overlapped(self, time_range):
if max(self.start, time_range.start) < min(self.end, time_range.end):
return True
else:
return False
def get_overlapped_range(self, time_range):
if not self.is_overlapped(time_range):
return
if time_range.start >= self.start:
if self.end >= time_range.end:
return TimeRange(time_range.start, time_range.end)
else:
return TimeRange(time_range.start, self.end)
elif time_range.start < self.start:
if time_range.end >= self.end:
return TimeRange(self.start, self.end)
else:
return TimeRange(self.start, time_range.end)
def __repr__(self):
return '{0} ------> {1}'.format(*[time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(d))
for d in [self.start, self.end]])