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的所有方法

posted @ 2019-01-23 20:17 aaronthon 阅读(...) 评论(...) 编辑 收藏

python获取两个日期间的工作日相关推荐

  1. Python计算两个日期间的工作日(交易日),去除周末节假日

    首先区分一下这里的工作日和节假日是不同的. 工作日是指去掉节假日即周末,但是不去掉调休的日期. 交易日主要针对金融行业,是指去掉节假日和周末,因为周末金融市场也是停盘的,所以即使周末因为调休工作,也不 ...

  2. SQL 如何得到两个日期间的工作日(附假期表)

    首先,我们有这样一张表 我们要知道两个日期间的工作日天数,相信大家有遇到过这个恶心人的需求,所谓工作日,不简简单单的就是除周六日以外的日子.要考虑到节假日,国庆啊,中秋啊,最让人头疼的是,你根本无法掌 ...

  3. MYSQL 如何得到两个日期间的工作日(不含周六日,节假日)

    写在前面  参考文章 SQL 如何得到两个日期间的工作日(附假期表)_Fuzz-CSDN博客_sql计算日期之间工作日函数 这篇文章使用的是SQL SEVER ,如何转化为 MYSQL 新手尝试两个小 ...

  4. oracle计算两个日期间的工作日(根据表配置)

    首先新增表用于配置非工作日,工作日,具体配置在程序中处理 DROP TABLE "T_WEEKDAY"; CREATE TABLE "T_WEEKDAY" (& ...

  5. 记录一次计算两个日期间的工作日天数,排除节假日、周末等

    1.数据库存储节假日.补班日期 数据库结构如下,0代表节日,1代表补班日期,需要每年更新 2.代码 (1)计算相差天数 @Overridepublic Long getWorkDay(String s ...

  6. 【LocalDate】获取两个日期间相差的年数、月数、天数

    常见的错误做法!!! 比如获取相差月:使用Period.between(date1,date2).getMonth() LocalDate date1 = LocalDate.of(2022,2,10 ...

  7. SQLServer 计算两个日期间的工作日(排除周六和周日,不排除节假日)

    CREATE FUNCTION GetWorkDays(@dt_begin DATETIME , --计算的开始日期@dt_end DATETIME --计算的结束日期) RETURNS INT AS ...

  8. 获取两个日期间的年份差 月份差 日期差

    年份差 EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM date) 月份差 months_between(SYSDATE,date) 日期差 date-t ...

  9. 计算两个日期间有多少个工作日

    function TmainForm.WorksDay( //计算两个日期间有多少个工作日 mStartDate: TDate; //开始日期 mEndDate: TDate //终止日期 ): In ...

最新文章

  1. 顺时针打印矩阵 python
  2. Hadoop系列之一:hadoop部署安装
  3. 软件测试培训 高级测试/测试开发基本技能列表
  4. 前端开发应届生面试指南(含各大公司具体指南及面试真题)
  5. 若使用numba.cuda.jit加速pytorch训练代码会怎样
  6. [资料整理] Decentralized Services Orchestration, Choreography相关的几篇论文
  7. python爬虫教程 百度云-如何使用python编程【python爬虫教程 百度云】
  8. 百度一口气亮出NLP十年积累:完整技术布局全面披露,面向业界砸下11项七夕大礼
  9. get post put delete
  10. win10英文系统一键装机教程
  11. Linux列出安装过的程序
  12. 接口与抽象类的应用(包括各自设计模式)
  13. 基于mysql的可视化日志管理——loganalyzer
  14. Android必知必会-使用Intent打开第三方应用及验证可用性
  15. uniapp和原生开发区别_web app和原生app有什么区别?
  16. 杨辉三角数学性质及参考例题
  17. easyexcel解析xls文件:Convert excel format exception.You can try specifying the ‘excelType‘ yourself
  18. 【分享】笔记本触控面板使用指南
  19. 服务器稳定时间,NTP时钟服务器网络时间服务器哪个更好呀?
  20. 目标检测之正负样本详解

热门文章

  1. vs使用mingw生成的动态库
  2. [论文阅读笔记06]OpenUE:An Open Toolkit of Universal Extraction from Text
  3. 瑞吉外卖-新增菜品-异常处理
  4. 号外号外!宠粉抽奖福利来啦!赶紧看过来!
  5. 三行情书计算机系,【全国高校三行情书大赛官网】_全国高校三行情书大赛作品...
  6. iOS开发-Interface Builder的前世今生
  7. 手机备忘录怎么改红色字体
  8. mysql程序注册时间到期key_MySQL-Front 出现“程序注册时间到期 程序将被限制模式下运行”解决方式...
  9. 混沌 计算机无法处理,PC游戏必备,终于解决了游戏里混沌的声音问题,功能居然这么多...
  10. 气球漂浮css3动画js特效