使用dateutil.rrule计算两日期工作日并排除指定日期列表的方法
实现方法
exdate参数接受datetime对象组成的列表,你只需要提前把需要排除的日期转为datetime.datetime类型存入列表,再传入rrule的exdate参数即可,示例如下:
import datetime from dateutil.rrule import * # 定义需要排除的日期列表,统一转为datetime对象 exclude_dates = [ datetime.datetime(2021, 5, 1), datetime.datetime(2021, 5, 5), datetime.datetime(2021, 6, 14) ] number_weekdays = rrule( WEEKLY, byweekday=(SU,MO,TU,WE,TH), dtstart=datetime.datetime(2021, 5, 1), until=datetime.datetime(2021, 6, 30), exdate=exclude_dates # 传入排除日期列表 ).count()
- 如果你的排除日期存储为字符串格式(比如
"2021-05-01"),可以用datetime.datetime.strptime(日期字符串, "%Y-%m-%d")批量转换后再存入列表。 - 即使排除列表中的日期不在你统计的日期范围内、或者本身不属于你设置的工作日范围,也不会报错,
rrule会自动过滤无效的排除项。
内容的提问来源于stack exchange,提问作者rafine
相关产品推荐
相关产品推荐

