date_range 生成器过去 30 天 Python

用户12625679

我想返回过去 30 天的列表。这是我迄今为止尝试过的,但不确定如何继续返回列表

def date_range():
    start_date = datetime.date(2021,3,1)
    end_date = datetime.date(2021,3,31)
    delta = datetime.timedelta(days=1)
    
    while start_date <= end_date:
        start_date+=delta

期望输出

date_range = ['2021-03-01','2021-03-02','2021-03-03','2021-03-04','2021-03-05',...] 
米克韦

您应该创建一个空列表并继续附加日期:

import datetime


def date_range():
    result = []

    current = datetime.date(2021, 3, 1)
    end = datetime.date(2021, 3, 31)
    delta = datetime.timedelta(days=1)

    while current <= end:
        result.append(current)
        current += delta

    return result

print(date_range())

当然,您可以将 start 和 end 作为参数传递,这更有意义:

import datetime


def date_range(start, end):
    result = []

    current = start
    delta = datetime.timedelta(days=1)
    while current <= end:
        result.append(current)
        current += delta

    return result


print(date_range(datetime.date(2021, 3, 1), datetime.date(2021, 3, 31)))

如果你想要它们作为字符串:

import datetime


def date_range(start, end):
    result = []

    current = start
    delta = datetime.timedelta(days=1)
    while current <= end:
        result.append(current.strftime("%Y-%m-%d"))
        current += delta

    return result


print(date_range(datetime.date(2021, 3, 1), datetime.date(2021, 3, 31)))

如果您只需要遍历它们,则可以全部产生它们,而无需创建列表:

def date_range(start, end):
    current = start
    delta = datetime.timedelta(days=1)
    while current <= end:
        yield current
        current += delta


for date in date_range(datetime.date(2021, 3, 1), datetime.date(2021, 3, 31)):
    print(date)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章