计算2个时间段的重叠天数
生活随笔
收集整理的這篇文章主要介紹了
计算2个时间段的重叠天数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近做一個需求,是計算查詢?nèi)掌诜秶鷥?nèi)產(chǎn)生的費用,需要將查詢?nèi)掌诜秶鷮嶋H產(chǎn)生費用日期范圍計算重疊天數(shù),然后重疊天數(shù)*每天費用=查詢?nèi)掌诜秶鷥?nèi)的費用。
一個時間段跟另一個時間段,有如下三種情況:
1. 沒有重疊
2. 部分重疊
3. 包含式重疊。即一個時間段被另一個時間段包含。
經(jīng)過分析,將2個時間段按時間線排列,只需要算出最早end_date跟最晚start_date的交集就行了。
即overlap = (min(end1, end2) - max(start1, start2)).days + 1
下面是完整代碼
def calc_overlap_days(s1, e1, s2, e2):latest_start = max(s1, s2)earliest_end = min(e1, e2)overlap = (earliest_end - latest_start).days + 1if overlap < 0:overlap = 0return overlap總結(jié)
以上是生活随笔為你收集整理的计算2个时间段的重叠天数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cartoon-Stylegan2:快来
- 下一篇: python白_Python小白到底有多