Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于初始日期自动创建日期_Python_Date_Datetime_For Loop - Fatal编程技术网

Python 基于初始日期自动创建日期

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

我正在尝试从初始日期自动创建日期。”每个月的“天数”必须保持不变,应更改的变量为“月”和“年”。变量“composition”用作计数器,以增加一年中的月份数,直到达到较高的水平,然后年份应发生变化,计数再次开始

我附上一个例子来解释

代码如下:

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可以让生活变得更加轻松