生成间隔之间的数据时间列表 [英] Generate a list of datetimes between an interval

查看:144
本文介绍了生成间隔之间的数据时间列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定两个数据时间( start_date end_date ),我想生成一个其他数据时间列表这两个日期,新的数据时间间隔以可变间隔分隔。例如在2011-10-10至2011-12-12之间的每4天或现在和明天之间的每8小时19点。

Given two datetimes (start_date and end_date), I'd like to generate a list of other datetimes between these two dates, the new datetimes being separated by a variable interval. e.g. every 4 days between 2011-10-10 and 2011-12-12 or every 8 hours between now and tomorrow 19p.m.

也许大致相当于 Dateperiod PHP类。

Maybe something roughly equivalent to the Dateperiod PHP class.

在Python中最有效的方法是什么?

What would be the most efficient way to accomplish this in Python?

推荐答案

使用 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

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

Works for both dates and datetime objects. Your second example:

>>> 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

这篇关于生成间隔之间的数据时间列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆