使用 datetime 和 timedelta 为我的代码创建一个函数

Creating a function for my code with datetime and timedelta

我已经完成了我的代码,当我 运行 它时它可以工作。但是,我需要将它变成一个函数,如果我调用该函数并传入任何数字列表,我可以获得相同的结果。这是我的代码:

from datetime import datetime, timedelta
dateStr = 'user-input'
dateObj = datetime.strptime(dateStr, '%Y%m%d')
timeStep = timedelta(days=1)
dateObj2 = dateObj + timeStep
days15 = [dateObj + timeStep*i for i in range(15)]
print(days15)

--------------------输出:

datetime.datetime(2017, 1, 1, 0, 0),..

我需要能够传入

date_str = "20170817"
results = days_15(date_str)
print(results)

然后得到相同的结果。有什么提示吗?或任何帮助 - 谢谢

你只需要添加一个def statement before your code to define the function, and rather than printing the result, return就可以了:

from datetime import datetime, timedelta

def days_15(dateStr):
    dateObj = datetime.strptime(dateStr, '%Y%m%d')
    timeStep = timedelta(days=1)
    return [dateObj + timeStep*i for i in range(15)]

my_date_str = "20170817"
results = days_15(my_date_str)
print(results)

输出:

[
datetime.datetime(2017, 8, 17, 0, 0), datetime.datetime(2017, 8, 18, 0, 0), 
datetime.datetime(2017, 8, 19, 0, 0), datetime.datetime(2017, 8, 20, 0, 0), 
datetime.datetime(2017, 8, 21, 0, 0), datetime.datetime(2017, 8, 22, 0, 0), 
datetime.datetime(2017, 8, 23, 0, 0), datetime.datetime(2017, 8, 24, 0, 0), 
datetime.datetime(2017, 8, 25, 0, 0), datetime.datetime(2017, 8, 26, 0, 0), 
datetime.datetime(2017, 8, 27, 0, 0), datetime.datetime(2017, 8, 28, 0, 0), 
datetime.datetime(2017, 8, 29, 0, 0), datetime.datetime(2017, 8, 30, 0, 0), 
datetime.datetime(2017, 8, 31, 0, 0)
]