生成间隔之间的日期时间列表
发布于 2021-01-29 16:20:23
给定两个日期时间(start_date
和end_date
),我想生成这两个日期之间其他日期时间的列表,新的日期时间以可变的间隔分开。例如,在2011-10-10和2011-12-12之间每4天一次,或者从现在到明天19
p.m之间每8小时一次。
也许大致等同于Dateperiod PHP类。
用Python完成此操作的最有效方法是什么?
关注者
0
被浏览
50
1 个回答
-
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