我正在尝试从初始日期开始自动创建日期。每个月的“天数”必须保持不变,应该更改的变量是“月”和“年”。变量“组成”用作计数器,以增加一年中的月份直到达到最高水平,然后年份应更改并且计数重新开始。
我附了一个例子来解释。
这是代码:
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
我希望能够输入任何月份以及日期的“月”和“年”字段,请根据正确的格式进行更改。我希望有人可以帮助我解决这个错误。谢谢!