python获取两个日期间的工作日
python获取两个日期间的工作日
import datetime # 计算两个日期之间的工作日数,非天数. class workDays():def __init__(self, start_date, end_date, days_off=None):"""days_off:休息日,默认周六日, 以0(星期一)开始,到6(星期天)结束, 传入tupple没有包含法定节假日,"""self.start_date = start_dateself.end_date = end_dateself.days_off = days_offif self.start_date > self.end_date:self.start_date,self.end_date = self.end_date, self.start_dateif 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_datewhile True:if tag_date > self.end_date:breakif tag_date.weekday() in self.days_work:yield tag_datetag_date += datetime.timedelta(days=1)def daysCount(self):"""工作日统计,返回数字"""return len(list(self.workDays()))def weeksCount(self, day_start=0):"""统计所有跨越的周数,返回数字默认周从星期一开始计算"""day_nextweek = self.start_datewhile True:if day_nextweek.weekday() == day_start:breakday_nextweek += datetime.timedelta(days=1)# 区间在一周内if day_nextweek > self.end_date:return 1weeks = ((self.end_date - day_nextweek).days + 1)/7weeks = int(weeks)if ((self.end_date - day_nextweek).days + 1)%7:weeks += 1if self.start_date < day_nextweek:weeks += 1return 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获取两个日期间的工作日相关推荐
- Python计算两个日期间的工作日(交易日),去除周末节假日
首先区分一下这里的工作日和节假日是不同的. 工作日是指去掉节假日即周末,但是不去掉调休的日期. 交易日主要针对金融行业,是指去掉节假日和周末,因为周末金融市场也是停盘的,所以即使周末因为调休工作,也不 ...
- SQL 如何得到两个日期间的工作日(附假期表)
首先,我们有这样一张表 我们要知道两个日期间的工作日天数,相信大家有遇到过这个恶心人的需求,所谓工作日,不简简单单的就是除周六日以外的日子.要考虑到节假日,国庆啊,中秋啊,最让人头疼的是,你根本无法掌 ...
- MYSQL 如何得到两个日期间的工作日(不含周六日,节假日)
写在前面 参考文章 SQL 如何得到两个日期间的工作日(附假期表)_Fuzz-CSDN博客_sql计算日期之间工作日函数 这篇文章使用的是SQL SEVER ,如何转化为 MYSQL 新手尝试两个小 ...
- oracle计算两个日期间的工作日(根据表配置)
首先新增表用于配置非工作日,工作日,具体配置在程序中处理 DROP TABLE "T_WEEKDAY"; CREATE TABLE "T_WEEKDAY" (& ...
- 记录一次计算两个日期间的工作日天数,排除节假日、周末等
1.数据库存储节假日.补班日期 数据库结构如下,0代表节日,1代表补班日期,需要每年更新 2.代码 (1)计算相差天数 @Overridepublic Long getWorkDay(String s ...
- 【LocalDate】获取两个日期间相差的年数、月数、天数
常见的错误做法!!! 比如获取相差月:使用Period.between(date1,date2).getMonth() LocalDate date1 = LocalDate.of(2022,2,10 ...
- SQLServer 计算两个日期间的工作日(排除周六和周日,不排除节假日)
CREATE FUNCTION GetWorkDays(@dt_begin DATETIME , --计算的开始日期@dt_end DATETIME --计算的结束日期) RETURNS INT AS ...
- 获取两个日期间的年份差 月份差 日期差
年份差 EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM date) 月份差 months_between(SYSDATE,date) 日期差 date-t ...
- 计算两个日期间有多少个工作日
function TmainForm.WorksDay( //计算两个日期间有多少个工作日 mStartDate: TDate; //开始日期 mEndDate: TDate //终止日期 ): In ...
最新文章
- 顺时针打印矩阵 python
- Hadoop系列之一:hadoop部署安装
- 软件测试培训 高级测试/测试开发基本技能列表
- 前端开发应届生面试指南(含各大公司具体指南及面试真题)
- 若使用numba.cuda.jit加速pytorch训练代码会怎样
- [资料整理] Decentralized Services Orchestration, Choreography相关的几篇论文
- python爬虫教程 百度云-如何使用python编程【python爬虫教程 百度云】
- 百度一口气亮出NLP十年积累:完整技术布局全面披露,面向业界砸下11项七夕大礼
- get post put delete
- win10英文系统一键装机教程
- Linux列出安装过的程序
- 接口与抽象类的应用(包括各自设计模式)
- 基于mysql的可视化日志管理——loganalyzer
- Android必知必会-使用Intent打开第三方应用及验证可用性
- uniapp和原生开发区别_web app和原生app有什么区别?
- 杨辉三角数学性质及参考例题
- easyexcel解析xls文件:Convert excel format exception.You can try specifying the ‘excelType‘ yourself
- 【分享】笔记本触控面板使用指南
- 服务器稳定时间,NTP时钟服务器网络时间服务器哪个更好呀?
- 目标检测之正负样本详解
热门文章
- vs使用mingw生成的动态库
- [论文阅读笔记06]OpenUE:An Open Toolkit of Universal Extraction from Text
- 瑞吉外卖-新增菜品-异常处理
- 号外号外!宠粉抽奖福利来啦!赶紧看过来!
- 三行情书计算机系,【全国高校三行情书大赛官网】_全国高校三行情书大赛作品...
- iOS开发-Interface Builder的前世今生
- 手机备忘录怎么改红色字体
- mysql程序注册时间到期key_MySQL-Front 出现“程序注册时间到期 程序将被限制模式下运行”解决方式...
- 混沌 计算机无法处理,PC游戏必备,终于解决了游戏里混沌的声音问题,功能居然这么多...
- 气球漂浮css3动画js特效