gpt4 book ai didi

python - python中两个日期范围之间的重叠日期

转载 作者:太空狗 更新时间:2023-10-30 01:20:39 24 4
gpt4 key购买 nike

我正在寻找两个日期范围之间的重叠日期,如下所示:

range1 = start(2016-06-01) end (2016-06-20)
range2 = start(2016-06-10) end (2016-06-13)

这里的结果是 4 个日期 (2016-06-10,2016-06-11,2016-06-12,2016-06-13)。另一个例子:

 range1 = start(2016-06-01) end (2016-06-20) range2 = start(2016-06-18)
end (2016-06-25)

这里的结果是 3 个日期 (2016-06-18,2016-06-19,2016-06-20)。如果没有日期重叠,则结果为 0 个日期。

我找到了 this发布它有助于确定重叠日期的数量,但我想知道我是否可以在不使用长 if/else 语句的情况下获得实际日期?

提前致谢!

最佳答案

我建议生成两个范围内的每个日期,然后选择两个集合之间的交集。这样做的片段可能如下所示:

from datetime import date, timedelta


def f(d1, d2):
delta = d2 - d1
return set([d1 + timedelta(days=i) for i in range(delta.days + 1)])

range1 = [date(2016, 6, 1), date(2016, 6, 20)]
range2 = [date(2016, 6, 10), date(2016, 6, 13)]

print f(*range1) & f(*range2)

出于性能目的,您还可以在生成给定范围内的日期时将 d1 + timedelta(days=i) 转换为 str

关于python - python中两个日期范围之间的重叠日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37868117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com