Python 基于初始日期自动创建日期
我正在尝试从初始日期自动创建日期。”每个月的“天数”必须保持不变,应更改的变量为“月”和“年”。变量“composition”用作计数器,以增加一年中的月份数,直到达到较高的水平,然后年份应发生变化,计数再次开始 我附上一个例子来解释 代码如下:Python 基于初始日期自动创建日期,python,date,datetime,for-loop,Python,Date,Datetime,For Loop,我正在尝试从初始日期自动创建日期。”每个月的“天数”必须保持不变,应更改的变量为“月”和“年”。变量“composition”用作计数器,以增加一年中的月份数,直到达到较高的水平,然后年份应发生变化,计数再次开始 我附上一个例子来解释 代码如下: import datetime years = 6 composition = 4 date_str = '02/03/2017' # The date - 29 Dec 2017 format_str = '%d/%m/%Y' # The for
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\u str='02/01/2017'
或date\u str='02/02/2017'
或date\u str='02/03/2017'
。但是,当我更改为date\u str='02/04/2017'
或更高版本时,会出现以下错误:
ValueError: month must be in 1..12
我希望能够输入任何月份以及日期的“月”和“年”字段,并根据正确的格式进行更改。我希望有人能帮我解决这个错误。谢谢
month+3*i
您需要确保不会超过12
。为什么不把月份加在日期上呢?如果你使用i
和j
循环,你不需要手动增加它们。使用功能add\u months
from可以让生活变得更加轻松