如何在python中创建日期间隔列表?

2024-09-28 05:28:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在调用一个API,它允许我在请求url中输入开始和结束日期,每个请求需要一个31天内的日期范围?你知道吗

有没有可能像下面的例子那样循环一个日期范围?你知道吗

max_start_date   =  '2017-01-01'
max_end_date =   '2017-12-31'

第一个循环将返回'2017-01-01''2017-01-31',第二个循环将返回'2017-02-01''2017-03-03'

url = "https://api.awin.com/publishers/{}/transactions/?startDate={}T00%3A00%3A00&endDate={}0T01%3A59%3A59&timezone=UTC&accessToken={}".format(publisher_id, start_date, end_date,token)

Tags: httpscomapiurldatestartmax例子
2条回答

您可以尝试以下方法获取日期列表:

import datetime as dt
max_start_date = '2017-01-01'
max_end_date = '2017-12-31'

def dt_range(*args):
    """
    Args are positional, though you could probably 
    toss in an evaluation part to determine which is the min date.
    """
    dt_start = dt.datetime.strptime(args[0], '%Y-%m-%d')
    dt_end = dt.datetime.strptime(args[1], '%Y-%m-%d')
    for i in range(int((dt_end - dt_start).days)+1):
        yield dt_start + dt.timedelta(i)


for i in dt_range(max_start_date, max_end_date):
    print(i.strftime('%Y-%m-%d'))

使用datetime模块:

from datetime import date, timedelta

start = date(2017, 1, 1)
end = date(2017, 12, 31)

while start < end:
    print(start, start + timedelta(days=31))
    start += timedelta(days=31)

如果需要循环使用日历月,请考虑使用relativedeltafrom dateutil

from dateutil.relativedelta import relativedelta

while start < end:
    print(start, start + relativedelta(months=1))
    start += relativedelta(days=31)

(您需要通过运行pip install dateutil来安装它)

文件:

相关问题 更多 >

    热门问题