如何在python中获取日期范围内某些特定工作日的列表



我需要获取日期范围内的星期一列表。

例如:

# selected date range
date_range = ['2019-02-25', '2019-03-25']
# desired output:
mondays = ['2019-02-25', '2019-03-04', '2019-03-11', '2019-03-18', '2019-03-25']
# selected date range
date_range = ['2019-02-25', '2019-03-20']
# desired output
mondays = ['2019-02-25', '2019-03-04', '2019-03-11', '2019-03-18']

开始日期始终是星期一。

有谁知道我如何使用python日期时间生成星期一列表?

这是使用weekday((的一种方法。

前任:

import datetime
def get_mondays(date_start, date_end):
date_start = datetime.datetime.strptime(date_start, "%Y-%m-%d")
date_end = datetime.datetime.strptime(date_end, "%Y-%m-%d")
result = []
while date_start <= date_end:
if date_start.weekday() == 0:   #0 == Monday
result.append(date_start.strftime("%Y-%m-%d")) 
date_start += datetime.timedelta(days=1)
return result
print(get_mondays('2019-02-25', '2019-03-25'))
print(get_mondays('2019-02-25', '2019-03-20'))

输出:

['2019-02-25', '2019-03-04', '2019-03-11', '2019-03-18', '2019-03-25']
['2019-02-25', '2019-03-04', '2019-03-11', '2019-03-18']

如果您可以使用第三方模块dateutil

from dateutil import rrule, parser
def case_of_the_mondays(start,end): 
mondays = list(rrule.rrule(rrule.WEEKLY,
dtstart=parser.parse(start),
until=parser.parse(end))) 
return mondays 

结果:

In [22]: case_of_the_mondays('2019-02-25','2019-03-25')
Out[22]: 
[datetime.datetime(2019, 2, 25, 0, 0),
datetime.datetime(2019, 3, 4, 0, 0),
datetime.datetime(2019, 3, 11, 0, 0),
datetime.datetime(2019, 3, 18, 0, 0),
datetime.datetime(2019, 3, 25, 0, 0)]

最新更新