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