首页 > 解决方案 > 如何以 Z 单位的间隔生成从日期 X 到日期 Y 的常规时间序列?

问题描述

我是 Python 新手(来自 Matlab)并且在执行简单任务时遇到了一些麻烦:

如何以 Z 单位的间隔创建从日期 X 到日期 Y 的常规时间序列?

例如,从 2013 年 1 月 1 日到 2013 年 1 月 31 日,每 10 分钟一班

在 Matlab 中:

t = datenum(2013,1,1):datenum(0,0,0,0,10,0):datenum(2013,12,31);

标签: pythondatetime

解决方案


此函数将生成任何间隔,类似于range,但也适用于非整数:

def make_series(begin, end, interval):
    x = begin
    while x < end:
        yield x
        x = x + interval

然后你可以这样做:

>>> import datetime
>>> date_x = datetime.datetime(2013,1,1)
>>> date_y = datetime.datetime(2013,12,31)
>>> step = datetime.timedelta(days=50)
>>>
>>> list(make_series(date_x, date_y, step))
[datetime.datetime(2013, 1, 1, 0, 0), datetime.datetime(2013, 2, 20, 0, 0), datetime.datetime(2013, 4, 11, 0, 0), datetime.datetime(2013, 5, 31, 0, 0), datetime
.datetime(2013, 7, 20, 0, 0), datetime.datetime(2013, 9, 8, 0, 0), datetime.datetime(2013, 10, 28, 0, 0), datetime.datetime(2013, 12, 17, 0, 0)]

推荐阅读