Python 箭头获取日期范围之间的年份列表
Python arrow get list of years between date range
我有这个功能:
def function(start_date_arrow=None,end_date_arrow=None, date_concept=None):
list=[getattr(date, date_concept) for date in arrow.Arrow.range(date_concept, start_date_arrow, end_date_arrow)]
此函数在迭代 date_concept='month'
和 date_concept='day'
时效果很好。另一方面,date_concept='year'
只有 return 是一个包含一个项目的列表。
例如:
start_date_arrow= arrow.get('2021-11-05')
end_date_arrow= arrow.get('2022-02-05')
year_list=function(start_date_arrow=start_date_arrow,end_date_arrow=end_date_arrow, date_concept='year')
year_list is [2021]
month_list=function(start_date_arrow=start_date_arrow,end_date_arrow=end_date_arrow, date_concept='month')
month_list is [11, 12, 1, 2]
day_list=function(start_date_arrow=start_date_arrow,end_date_arrow=end_date_arrow, date_concept='day')
day_list is [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
第二个和第三个调用是 okei,但第一个应该 return [2021,2022] 而不是 [2021]。
知道年会上发生了什么吗?
发现问题。
如果您使用:
start_date_arrow= arrow.get('2021-11-05')
end_date_arrow= arrow.get('2022-02-05')
两者之间的年份相差小于1,所以它只是第一个return,所以到return列表中的2022年end_date_arrow
应该是end_date_arrow= arrow.get('2022-11-05')
所以我用 if
语句强制结束日期只增加一年,以强制这两年的 return。
我有这个功能:
def function(start_date_arrow=None,end_date_arrow=None, date_concept=None):
list=[getattr(date, date_concept) for date in arrow.Arrow.range(date_concept, start_date_arrow, end_date_arrow)]
此函数在迭代 date_concept='month'
和 date_concept='day'
时效果很好。另一方面,date_concept='year'
只有 return 是一个包含一个项目的列表。
例如:
start_date_arrow= arrow.get('2021-11-05')
end_date_arrow= arrow.get('2022-02-05')
year_list=function(start_date_arrow=start_date_arrow,end_date_arrow=end_date_arrow, date_concept='year')
year_list is [2021]
month_list=function(start_date_arrow=start_date_arrow,end_date_arrow=end_date_arrow, date_concept='month')
month_list is [11, 12, 1, 2]
day_list=function(start_date_arrow=start_date_arrow,end_date_arrow=end_date_arrow, date_concept='day')
day_list is [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
第二个和第三个调用是 okei,但第一个应该 return [2021,2022] 而不是 [2021]。
知道年会上发生了什么吗?
发现问题。 如果您使用:
start_date_arrow= arrow.get('2021-11-05')
end_date_arrow= arrow.get('2022-02-05')
两者之间的年份相差小于1,所以它只是第一个return,所以到return列表中的2022年end_date_arrow
应该是end_date_arrow= arrow.get('2022-11-05')
所以我用 if
语句强制结束日期只增加一年,以强制这两年的 return。