首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中表示两个特定日期时间之间的句点?

如何在Python中表示两个特定日期时间之间的句点?
EN

Stack Overflow用户
提问于 2019-04-04 08:13:56
回答 1查看 351关注 0票数 4

是否有一种毕达通的方法来表示两个给定的datetimes之间的周期,而不是表示它们之间的时间量(又名)。( timedelta),但是实际期间,例如datetime(2000, 1, 1) (包含)和datetime(2000, 1, 2, hour=6) (独占)之间。用例是,我需要一堆开始和结束的datetime,并将它们连接在一起,创建一个表示所有输入的最小的不重叠周期集。我知道如何做到这一点,但我不知道在Python中是否有一种方便的方法,例如我可以轻松地连接句点,如下所示:

代码语言:javascript
复制
first_start = datetime(2000, 1, 1)
first_end = datetime(2000, 1, 2, hour=6)
first = period(first_start, first_end)
second_start = datetime(2000, 1, 1, hour=3)
second_end = datetime(2000, 1, 2, hour=9)
second = period(second_start, second_end)
expected = period(first_start, second_end)

assert first + second == period(first_start, second_end)
EN

回答 1

Stack Overflow用户

发布于 2019-04-04 09:37:32

DateTimeRange库可能会在这方面给您一些帮助。它不提供现成的功能,但我认为它使它易于编写。

代码语言:javascript
复制
from datetimerange import DateTimeRange

def simplify_ranges(dtrs):
    if not dtrs:
        return []
    dtrs = sorted(dtrs, key=lambda dtr: dtr.start_datetime)
    simplified = []
    current = dtrs[0]
    for dtr in dtrs[1:]:
        if current.intersection(dtr).is_valid_timerange():
            current = current.encompass(dtr)
        else:
            simplified.append(current)
            current = dtr
    simplified.append(current)
    return simplified

dtrs = [
    DateTimeRange("2019-01-25T00:00:00+0000", "2019-01-30T00:00:00+0000"),
    DateTimeRange("2019-01-01T00:00:00+0000", "2019-01-10T00:00:00+0000"),
    DateTimeRange("2019-01-21T00:00:00+0000", "2019-01-22T00:00:00+0000"),
    DateTimeRange("2019-01-20T00:00:00+0000", "2019-01-21T00:00:00+0000"),
    DateTimeRange("2019-01-06T00:00:00+0000", "2019-01-15T00:00:00+0000"),
]

print(*simplify_ranges(dtrs), sep='\n')
# 2019-01-01T00:00:00+0000 - 2019-01-15T00:00:00+0000
# 2019-01-20T00:00:00+0000 - 2019-01-22T00:00:00+0000
# 2019-01-25T00:00:00+0000 - 2019-01-30T00:00:00+0000
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55510973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档