Jef*_*man 1 python date generator python-2.7
我需要查询 API 以获取多月期间的数据。但是,API 的阻塞时间间隔超过 3 天。
所以我想创建一个生成器函数来将我的多月日期范围分成 3 天段,我可以在重复调用命中 API 的函数时使用这些段:当我传递开始日期和结束日期时,它给了我:
到目前为止,这是我的代码。它将第一次工作,但我不确定如何在下次调用该函数时使开始日期增加 3 天。而且我也不确定在达到最终结束日期之前我是否还有 1 或 2 天的时间来将我的until变量设置为最终结束日期——我认为现在它只是说“还有不到 3 天的时间,直到最后日期,所以让我们退出”:
3_day_segmenter(start, end):
start_date = datetime.strptime(start, '%Y-%m-%d')
end_date = datetime.strptime(end, '%Y-%m-%d')
since = start_date
for date in range(int ((end_date - start_date).days)):
until = start_date + datetime.timedelta(days=3)
yield since, until
Run Code Online (Sandbox Code Playgroud)
根据您的需要调整生成一个间隔之间的日期时间列表:
from datetime import date, timedelta
def perdelta(start, end, delta):
curr = start
while curr < end:
yield curr, min(curr + delta, end)
curr += delta
Run Code Online (Sandbox Code Playgroud)
这会产生一个(date1, date2)受end最后一个段的日期约束的元组:
>>> for s, e in perdelta(date(2011, 10, 10), date(2011, 11, 10), timedelta(days=3)):
... print s, e
...
2011-10-10 2011-10-13
2011-10-13 2011-10-16
2011-10-16 2011-10-19
2011-10-19 2011-10-22
2011-10-22 2011-10-25
2011-10-25 2011-10-28
2011-10-28 2011-10-31
2011-10-31 2011-11-03
2011-11-03 2011-11-06
2011-11-06 2011-11-09
2011-11-09 2011-11-10
Run Code Online (Sandbox Code Playgroud)
请注意,最后的结果仅涵盖 2 天。
| 归档时间: |
|
| 查看次数: |
4861 次 |
| 最近记录: |