Python查找两个日期之间的日期

Abd*_*man 4 python python-3.x python-datetime python-dateutil

我正在使用python3开发一个项目,其中我必须使用一个api,并且需要获取日期范围内某个星期中特定日期的数据。

因此,示例输入参数为:

firstDay = '1-January-2000'
lastDay = '22-february-2000'
weekDay = 'Monday'
Run Code Online (Sandbox Code Playgroud)

因此,日期将包含在API响应中,但是当天没有任何信息。因此,我必须获取特定日期的所有日期,例如Monday日期范围之间的日期。

根据上面的示例,如何获取和Mondays之间的所有日期?firstDaylastDay

fra*_*own 5

from datetime import date, timedelta, datetime
import time

firstDay = '1-January-2000'
lastDay = '22-february-2000'
weekDay = 'Monday'

firstDay = datetime.strptime(firstDay, '%d-%B-%Y') 
lastDay = datetime.strptime(lastDay, '%d-%B-%Y')
dates = [firstDay + timedelta(days=x) for x in range((lastDay-firstDay).days + 1) if (firstDay + timedelta(days=x)).weekday() == time.strptime(weekDay, '%A').tm_wday]
Run Code Online (Sandbox Code Playgroud)

输出

dates
[datetime.datetime(2000, 1, 3, 0, 0),
 datetime.datetime(2000, 1, 10, 0, 0),
 datetime.datetime(2000, 1, 17, 0, 0),
 datetime.datetime(2000, 1, 24, 0, 0),
 datetime.datetime(2000, 1, 31, 0, 0),
 datetime.datetime(2000, 2, 7, 0, 0),
 datetime.datetime(2000, 2, 14, 0, 0),
 datetime.datetime(2000, 2, 21, 0, 0)]


Run Code Online (Sandbox Code Playgroud)

格式输出 weekDay-Month-year

[d.strftime("%A-%B-%Y") for d in dates] 

['Monday-January-2000',
 'Monday-January-2000',
 'Monday-January-2000',
 'Monday-January-2000',
 'Monday-January-2000',
 'Monday-February-2000',
 'Monday-February-2000',
 'Monday-February-2000']
Run Code Online (Sandbox Code Playgroud)

输出firstDay格式:1-January-2000

[d.strftime("%-d-%B-%Y") for d in dates]   
['3-January-2000',
 '10-January-2000',
 '17-January-2000',
 '24-January-2000',
 '31-January-2000',
 '7-February-2000',
 '14-February-2000',
 '21-February-2000']
Run Code Online (Sandbox Code Playgroud)