首先区分一下这里的工作日和节假日是不同的。
工作日是指去掉节假日即周末,但是不去掉调休的日期。
交易日主要针对金融行业,是指去掉节假日和周末,因为周末金融市场也是停盘的,所以即使周末因为调休工作,也不算做交易日。
我们这里主要用到Python中datetime模块。还有一个特别好用的模块就是chinesecalendar,它主要能够实时更新中国的节假日有哪些,简直就是一个利器。
首先安装chinesecalendar也非常容易,我是在Anaconda Promot中安装的:

pip install chinesecalendar

安装完成之后,下面看一下两个方法的使用:

  • is_workday:判断是否为工作日,返回布尔值
  • is_holiday:判断是否为节假日,返回布尔值
from chinese_calendar import is_workday, is_holiday
import datetime
day1 = datetime.date(2020,1,18)
day2 = datetime.date(2020,1,19)
day3 = datetime.date(2020,1,31)
print(is_workday(day1)) # False
print(is_holiday(day1)) # True
print(is_workday(day2)) # True
print(is_workday(day3)) # False

2020-01-18是正常周日,所以不是工作日;2020-01-19是春节调休的工作日;2020-01-31是正月初七,是受今年新冠疫情影响延长的春节假期,也不算工作日。是不是很厉害,连这个都可以识别。有了它,我们就可以轻松识别我们的节假日了。
下面计算两个日期间的工作日天数:

def workdays(start,end):'''计算两个日期间的工作日start:开始时间end:结束时间'''from datetime import datetime,timedeltafrom chinese_calendar import is_workday# 字符串格式日期的处理if type(start) == str:start = datetime.strptime(start,'%Y-%m-%d').date()if type(end) == str:end = datetime.strptime(end,'%Y-%m-%d').date()# 开始日期大,颠倒开始日期和结束日期if start > end:start,end = end,startcounts = 0while True:if start > end:breakif is_workday(start):counts += 1start += timedelta(days=1)return counts

封装函数workdays(start,end)。可以接受形式为’%Y-%m-%d’字符串格式或日期格式的日期。下面运行看一下效果:

print(workdays('2020-01-19','2020-01-24'))
# 5
from datetime import date
print(workdays(date(2020,1,19),date(2020,1,24))) # 5

2020-01-19是调休工作日,所以一共是5天。
计算交易日天数:

def tradedays(start,end):'''计算两个日期间的工作日start:开始时间end:结束时间'''from datetime import datetime,timedeltafrom chinese_calendar import is_holiday# 字符串格式日期的处理if type(start) == str:start = datetime.strptime(start,'%Y-%m-%d').date()if type(end) == str:end = datetime.strptime(end,'%Y-%m-%d').date()# 开始日期大,颠倒开始日期和结束日期if start > end:start,end = end,startcounts = 0while True:if start > end:breakif is_holiday(start) or start.weekday()==5 or start.weekday()==6:start += timedelta(days=1)continuecounts += 1start += timedelta(days=1)return counts

这里主要是需要排除所有的节假日和周六日。
运行看下效果:

print(tradedays('2020-01-19','2020-01-24')) # 4
from datetime import date
print(workdays(date(2020,1,24),date(2020,1,19))) # 4

因为2020-01-19虽然是工作日,但是是周日,所以不算交易日。
两个函数一个是计算工作日,一个计算交易日,都可以直接拿去使用,注意传参的格式,或者自行进行修改使用。

Python计算两个日期间的工作日(交易日),去除周末节假日相关推荐

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

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

  2. python获取两个日期间的工作日

    python获取两个日期间的工作日 import datetime # 计算两个日期之间的工作日数,非天数. class workDays():def __init__(self, start_dat ...

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

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

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

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

  5. 计算两个日期之间的工作日(去掉周末和节假日)

    一个贴吧上找到的,整理一下 package com.uphone.commons;import java.text.ParseException; import java.text.SimpleDat ...

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

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

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

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

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

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

  9. LocalDate计算两个日期间距离

    1.LocalDate提供了until()方法,计算了两个日期之间的年.月和日的周期 例如: from {@code 2017-08-28} to {@code 2018-09-30} is &quo ...

最新文章

  1. Android UI学习 - Linear Layout, RelativeLayout
  2. 实验三 ShellShock 攻击实验
  3. 五大主流深度学习框架Google趋势比较
  4. 将下图的nfa确定化为dfa_作业8 非确定的自动机NFA确定化为DFA
  5. CCNA题库关于Frame-relay看图答题的解答
  6. 有没有python的班_【万字长文】别再报班了,一篇文章带你入门Python
  7. 从Firefox控制您喜欢的音乐播放器
  8. 浪潮商用机器与腾讯TDSQL完成互认证 共同拓展Power行业生态
  9. Windows 7安装PlayReady出现“任务被禁用”错误信息
  10. 蚂蚁上市,身边又多了一堆千万富翁!
  11. 批量下载css文件中的图片
  12. 美通企业日报 | 阿迪发布星战系列球鞋;安进27亿美元收购百济神州20.5%股份
  13. 主管叫我看tcpmp播放器,下面几行代码1月没看懂,求求你了,
  14. 转换函数(Transfer Function)设计
  15. 视频教程-数据结构实战完全手册-C/C++
  16. ”故乡飘已远,往意浩无边“
  17. 【C++基础知识】常成员函数,常引用
  18. Matlab2020a安装
  19. SHT10型温湿度传感器工作时序分析及驱动程序与Proteus仿真的实现
  20. 卖肾也真心伤不起! 史上最贵音响TOP10

热门文章

  1. python输出到文件乱码_解决python解析文件时输出乱码
  2. mongodb安装配置启动
  3. 嵌入式技术和物联网发展趋势
  4. 递归算法的时间复杂度终结篇
  5. FTP的两种传输模式
  6. Android实现获取验证码的倒计时功能
  7. 平衡二叉树算法实现C++
  8. Ant Design 'cross-env' 不是内部或外部命令,也不是可运行的程序 报错问题
  9. html中颜色的三种不同表示方法
  10. Vue快速入门(含下载地址)