生成间隔之间的日期时间列表

发布于 2021-01-29 16:20:23

给定两个日期时间(start_dateend_date),我想生成这两个日期之间其他日期时间的列表,新的日期时间以可变的间隔分开。例如,在2011-10-10和2011-12-12之间每4天一次,或者从现在到明天19
p.m之间每8小时一次。

也许大致等同于Dateperiod PHP类。

用Python完成此操作的最有效方法是什么?

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    用途datetime.timedelta

    from datetime import date, datetime, timedelta
    
    def perdelta(start, end, delta):
        curr = start
        while curr < end:
            yield curr
            curr += delta
    
    >>> for result in perdelta(date(2011, 10, 10), date(2011, 12, 12), timedelta(days=4)):
    ...     print result
    ...
    2011-10-10
    2011-10-14
    2011-10-18
    2011-10-22
    2011-10-26
    2011-10-30
    2011-11-03
    2011-11-07
    2011-11-11
    2011-11-15
    2011-11-19
    2011-11-23
    2011-11-27
    2011-12-01
    2011-12-05
    2011-12-09
    

    适用于日期和日期时间对象。您的第二个示例:

    >>> for result in perdelta(datetime.now(),
    ...         datetime.now().replace(hour=19) + timedelta(days=1),
    ...         timedelta(hours=8)):
    ...     print result
    ... 
    2012-05-21 17:25:47.668022
    2012-05-22 01:25:47.668022
    2012-05-22 09:25:47.668022
    2012-05-22 17:25:47.668022
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看