Python中工作日类库Busines Holiday的介绍与使用


Posted in Python onJuly 06, 2017

引言

大家在日常工作中,经常会碰到类似的场景,需要计算在某个时间段内的工作日以及确定某天是否为工作日,这里的介绍的工具包将很好的解决这个问题。

Python中工作日类库Busines Holiday的介绍与使用

1. 工具包Business Holiday介绍

其提供了非常简单易用的计算工作日的接口,并允许用户指定特定日期为假期,从而将其从当前的工作日中剔除。

项目主页: https://pypi.Python.org/pypi/business_calendar/

文档首页: http://py-business-calendar.readthedocs.io/en/latest/

2. 功能分析与介绍

Case 1: 计算在某个时间段之内的工作日天数

from business_calendar import Calendar, MO, TU, WE, TH, FR
import datetime
date1 = datetime.datetime(2013,1,10)
# normal calendar, no holidays
cal = Calendar()
date2 = datetime.datetime(2013,3,20)
print('%s days between %s and %s' % (cal.busdaycount(date1, date2), date1, date2))

功能描述: 计算2013/1/10之后的25天之内的工作日天数:

49 days between 2013-01-10 00:00:00 and 2013-03-20 00:00:00

Case 2: 计算若干工作日之后的日期

from business_calendar import Calendar, MO, TU, WE, TH, FR
import datetime
date1 = datetime.datetime(2013,1,10)
cal = Calendar()
date2 = cal.addbusdays(date1, 25)
print("The specified date will be %s" % date2)

功能描述: 计算25个工作日之后的日期

The specified date will be 2013-02-14 00:00:00

Case 3: 结合假期,以及星期的概念,计算工作日:

from business_calendar import Calendar, MO, TU, WE, TH, FR
import datetime
date1 = datetime.datetime(2013,1,10)
# normal calendar, no holidays
cal = Calendar(workdays=[MO,TU,WE,TH], holidays=['2013-01-17'])
date2 = datetime.datetime(2013,3,20)
print('%s days between %s and %s' % (cal.busdaycount(date1, date2), date1, date2))

功能描述: 指定周一到周四工作,1.17日是公众假期,计算会有多少个工作日:

38 days between 2013-01-10 00:00:00 and 2013-03-20 00:00:00

3. 功能分析

在该类库中,有workday和businessday的概念:

  • addbusydays(date, offset) 其将考虑holidays公休假的因素
  • addworkdays(date, offset) 忽略公休假的因素
  • busdaycount(date1, date2) 计算两个时间点直接的工作日
  • range(date1, date2) 返回工作日列表, 考虑假期因素
  • isworkday(date) 是否是工作日,忽略公休假的因素
  • isbusday(date) 是否工作日,考虑公休假
  • isHoliday(date) 是否是假日

4. 总结

business_holiday的包是非常强大了,基本覆盖了我们关于假期的需求,大家可以自行尝试一下如何使用。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python实现RSA加密(解密)算法
Feb 17 Python
python实现m3u8格式转换为mp4视频格式
Feb 28 Python
python+pandas生成指定日期和重采样的方法
Apr 11 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
pycharm配置当鼠标悬停时快速提示方法参数
Jul 31 Python
详解python中index()、find()方法
Aug 29 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
使用Python的Turtle库绘制森林的实例
Dec 18 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
Pycharm连接gitlab实现过程图解
Sep 01 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 Python
Python中动态检测编码chardet的使用教程
Jul 06 #Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
Jul 06 #Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
Jul 06 #Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 #Python
Python如何快速实现分布式任务
Jul 06 #Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
Jul 06 #Python
Python标准库sched模块使用指南
Jul 06 #Python
You might like
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
2018/10/12 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
Opacity.js
2007/01/22 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
python中类的一些方法分析
2014/09/25 Python
python获取从命令行输入数字的方法
2015/04/29 Python
python中list常用操作实例详解
2015/06/03 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
python生成随机红包的实例写法
2019/09/02 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
大学生军训自我鉴定
2014/02/12 职场文书
高中社区服务活动报告
2015/02/05 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
学前教育见习总结
2015/06/23 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
聘任通知书
2015/09/21 职场文书
Docker安装MySql8并远程访问的实现
2022/07/07 Servers