根据初始日期自动创建日期

时间:2019-12-21 18:27:37

标签: python date datetime for-loop

我正在尝试从初始日期开始自动创建日期。每个月的“天数”必须保持不变,应该更改的变量是“月”和“年”。变量“组成”用作计数器,以增加一年中的月份直到达到最高水平,然后年份应更改并且计数重新开始。

我附了一个例子来解释。

这是代码:

import datetime

years = 6
composition = 4

date_str = '02/03/2017' # The date - 29 Dec 2017
format_str = '%d/%m/%Y' # The format
datetime_obj = datetime.datetime.strptime(date_str, format_str)
date = datetime_obj.date()

month = date.month
year = date.year
date_list = []
for j in range(1,int(years+1)):
    for i in range(composition):
        date = date.replace(month=month+3*i)
        date_list.append(date)
        i += 3
    date = date.replace(year=year+j)
    j += 1
print(date_list)

这是结果:

[datetime.date(2017, 3, 2), datetime.date(2017, 6, 2), datetime.date(2017, 9, 2), datetime.date(2017, 12, 2), datetime.date(2018, 3, 2), datetime.date(2018, 6, 2), datetime.date(2018, 9, 2), datetime.date(2018, 12, 2), datetime.date(2019, 3, 2), datetime.date(2019, 6, 2), datetime.date(2019, 9, 2), datetime.date(2019, 12, 2), datetime.date(2020, 3, 2), datetime.date(2020, 6, 2), datetime.date(2020, 9, 2), datetime.date(2020, 12, 2), datetime.date(2021, 3, 2), datetime.date(2021, 6, 2), datetime.date(2021, 9, 2), datetime.date(2021, 12, 2), datetime.date(2022, 3, 2), datetime.date(2022, 6, 2), datetime.date(2022, 9, 2), datetime.date(2022, 12, 2)]

它仅适用于初始变量date_str = '02/01/2017'date_str = '02/02/2017'date_str = '02/03/2017'。但是,当我更改为date_str = '02/04/2017'或更高版本时,会出现以下错误:

ValueError: month must be in 1..12

我希望能够输入任何月份以及日期的“月”和“年”字段,请根据正确的格式进行更改。我希望有人可以帮助我解决这个错误。谢谢!

0 个答案:

没有答案