除Python之外的日期时间序列

除Python之外的日期时间序列,python,datetime,Python,Datetime,我试图创建一个datetime对象序列,但不包括周末。到目前为止,我已经成功地创建了从任何给定的开始日期到结束日期的日期序列,但我很难确定如何排除周末: # Generate sequence of dates startDate = datetime.datetime.strptime(start, '%Y-%m-%d').date() endDate = datetime.datetime.strptime(end, '%Y-%m-%d').date() nb_days = (endDate

我试图创建一个datetime对象序列,但不包括周末。到目前为止,我已经成功地创建了从任何给定的开始日期到结束日期的日期序列,但我很难确定如何排除周末:

# Generate sequence of dates
startDate = datetime.datetime.strptime(start, '%Y-%m-%d').date()
endDate = datetime.datetime.strptime(end, '%Y-%m-%d').date()
nb_days = (endDate - startDate).days + 1  # + 1 because range is exclusive
dates = [startDate + datetime.timedelta(days=x) for x in range(nb_days)]
isoweekday()
函数返回一周中的某一天,其中1为星期一

[d for d in dates if not d.isoweekday() in [6,7]]

你可以用图书馆的软件很好地完成这项工作

例如:

从dateutil.parser导入解析
从dateutil.rrule导入rrule、DAILY、MO、TU、WE、TH、FR
结果=rrule(
每日的
星期一=(MO、TU、WE、TH、FR),
dtstart=parse(start),
直到=解析(结束)
)
打印(列表(结果))
示例输出:

[datetime.datetime(2019, 1, 21, 0, 0),
 datetime.datetime(2019, 1, 22, 0, 0),
 datetime.datetime(2019, 1, 23, 0, 0),
 datetime.datetime(2019, 1, 24, 0, 0),
 datetime.datetime(2019, 1, 25, 0, 0),
 datetime.datetime(2019, 1, 28, 0, 0),
 datetime.datetime(2019, 1, 29, 0, 0),
 datetime.datetime(2019, 1, 30, 0, 0),
 datetime.datetime(2019, 1, 31, 0, 0),
 datetime.datetime(2019, 2, 1, 0, 0),
 datetime.datetime(2019, 2, 4, 0, 0)]

绝妙的解决方案。此外,考虑到您的Stackoverflow配置文件,您可能可以进一步帮助我解决我的问题。我如何排除开始/结束之间的所有非交易日?@Apollo如果你有一个假期列表,那么只需
[d代表d,如果不是d代表d在假期]
是的,因此没有py库来生成日期列表?@Apollo日期是位置特定的,每年都会变化。所以无论你在哪里,你都需要一份假期清单。