python获取两个日期间的工作日
Python 获取 两个 期间
2023-09-14 08:57:48 时间
import datetime # 计算两个日期之间的工作日数,非天数. class workDays(): def __init__(self, start_date, end_date, days_off=None): """days_off:休息日,默认周六日, 以0(星期一)开始,到6(星期天)结束, 传入tupple 没有包含法定节假日, """ self.start_date = start_date self.end_date = end_date self.days_off = days_off if self.start_date > self.end_date: self.start_date,self.end_date = self.end_date, self.start_date if days_off is None: self.days_off = 5,6 # 每周工作日列表 self.days_work = [x for x in range(7) if x not in self.days_off] def workDays(self): """实现工作日的 iter, 从start_date 到 end_date , 如果在工作日内,yield 日期 """ # 还没排除法定节假日 tag_date = self.start_date while True: if tag_date > self.end_date: break if tag_date.weekday() in self.days_work: yield tag_date tag_date += datetime.timedelta(days=1) def daysCount(self): """工作日统计,返回数字""" return len(list(self.workDays())) def weeksCount(self, day_start=0): """统计所有跨越的周数,返回数字 默认周从星期一开始计算 """ day_nextweek = self.start_date while True: if day_nextweek.weekday() == day_start: break day_nextweek += datetime.timedelta(days=1) # 区间在一周内 if day_nextweek > self.end_date: return 1 weeks = ((self.end_date - day_nextweek).days + 1)/7 weeks = int(weeks) if ((self.end_date - day_nextweek).days + 1)%7: weeks += 1 if self.start_date < day_nextweek: weeks += 1 return weeks
获取结果:
import datetime startdate = datetime.datetime(2018,1,11,20,20,20) enddate = datetime.datetime(2019,1,11,20,20,20) work = workDays(startdate,enddate) # 需要传入两个datetime格式日期 print(list(work.workDays())) # 获取一个元素为datetime日期格式的工作日期列表 print(work.daysCount()) # 获取工作日期的天数 print(work.weeksCount()) # 获取非工作日的天数 for i in work.workDays(): # 获取每一个工作日期 print(i) print(dir(work)) # 获取work的所有方法
相关文章
- Python学习--07迭代器、生成器
- python实现Fibonacci和二分法
- python执行系统命令后获取返回值的几种方式集合
- python逆向工程:通过代码生成类图
- python: easyocr的安装和使用(easyocr 1.6.2 / Python 3.7.15 )
- Centos 6.4 安装Python 2.7 python-pip
- paip.获取文件名从路径uapi java python php总结...
- Python:python语言中与时间有关的库函数简介、安装、使用方法(获取当前时间/计算程序块前后运行时间/模型训练时间或耗费时间)之详细攻略
- Python编程语言学习:python编程语言中重要函数讲解之map函数等简介、使用方法之详细攻略
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Listbox/Scrollbar)
- Python之ffmpeg-python:ffmpeg-python库的简介、安装、使用方法之详细攻略
- Python获取某平台主播照片, 实现颜值检测, 进行排名
- python图像变形
- 从采样、预测到聚类,教你用 Python 玩转时序问题
- Python编程:pkgutil获取包中的资源文件
- Python 安装pytz
- Python 日历模块calendar.monthrange 获取某一个月有多少天
- Python 3 自动化运维实战小项目之校验源和备份目录之间的差异
- python基础===一行 Python 代码实现并行(转)
- python学习===打印时间
- Python爬虫http&https协议(理论)